"한 번도 안 걸어본 집은 못 돌아다녀. 트리를 한 번, 작정하고 걸어봐."
두 반쪽, 폴더로
create-tauri-app이 만든 프로젝트를 열면 2-프로세스 모델이 디렉터리로 펼쳐진 게 보여. 루트엔 프론트엔드가 살아 — 웹 앱에서 기대할 그대로야: index.html, 컴포넌트가 든 src/, package.json, vite.config.ts 같은 번들러 설정. 이 반쪽은 Tauri가 아니라 네 웹 툴체인이 빌드해.
src-tauri/ 안엔 네이티브 반쪽이 살고, 완전한 Rust 크레이트야. 제일 자주 만질 파일:
Cargo.toml— Rust 의존성(tauri = "2"랑 플러그인이 선언되는 곳).src/main.rs— 작은 바이너리 진입점(run()호출).src/lib.rs—run()이 실제로 사는 곳: Builder, 플러그인, command, setup.tauri.conf.json— 프론트엔드와 코어를 엮는 설정(다음 레슨).capabilities/— 보안 허가(security트랙).icons/— 모든 플랫폼용 앱 아이콘.build.rs+gen/— 생성된 빌드 접착제랑 스키마. 손으로 거의 안 고쳐.
main.rs랑 lib.rs를 쪼갠 이유
중복처럼 보여: main.rs는 lib.rs의 run()을 부르는 두 줄이야. 이유는 모바일이야. iOS랑 Android엔 네가 통제하는 main()이 없어 — OS가 네 라이브러리 안으로 호출해 들어와. 모든 진짜 로직을 lib.rs의 run()(모바일 진입점 어트리뷰트로 표시)에 두면, 같은 코드 경로가 데스크톱 이랑 모바일을 다 섬겨. 이 분리는 오늘 데스크톱만 노려도 스캐폴드에 박힌 미래 호환성이야.