추상 Rust 가 하나면, 진짜 코드베이스 읽기는 또 다른 거야. 이 레슨이 배운 모든 걸 진짜 Rust 애플리케이션의 모양 — Tauri 기반 창작 앱 Cinder 의 네이티브 코어 — 을 걸으며 뿌리내려. (개념이랑 패턴만 — 여기 클론할 저장소는 없어; 핵심은 Rust 를 읽는 거지 가져오는 게 아니야.)
설계 문서로서의 Cargo.toml
Cinder 의 네이티브 코어는 Tauri 2 앱이고, 그 Cargo.toml 이 설계 근거처럼 읽혀. 각 의존성에 왜 거기 있는지 설명하는 주석이 달려: image-png feature 의 tauri (클립보드 경로가 PNG 를 디코드하니까), tauri-plugin-store (macOS WebView 의 localStorage 가 앱 샌드박스 아래선 휘발성이라, 영속성이 Rust 를 거치니까), 프로토콜 타입용 serde. 잘 관리된 Cargo.toml 은 버전뿐 아니라 아키텍처를 문서화해 — 바로 Tooling 트랙 레슨의 실전이야.
모든 트랙이, 한 file tree 에
코어가 이 퀘스트의 모든 트랙을 써: 프로토콜 타입엔 struct 랑 enum, 실패 가능 커맨드엔 Result 랑 ?, 직렬화엔 serde derive (절차적 매크로), 전체에 소유권이랑 빌림, 그리고 lib.rs 에서 그걸 엮는 Tauri 빌더 패턴. 네이티브 file-store 모듈은 평범한 소유권-과-Result Rust; window 모듈은 플랫폼 FFI 로 닿아. 언어 전체의 압축 투어야.
objc2 window 트릭, 해독
구체적 예 하나가 FFI 레슨을 현실에 묶어. macOS 에서 Tauri 자체 set_focus() 가 창을 전경으로 안정적으로 못 가져와 — 그래서 키 입력이 마지막에 포커스 쥔 아무 앱에 떨어질 수 있어. Cinder 의 window 모듈이 Cocoa 의 NSApplication.activate() 를 objc2 계열 크레이트로 감싸: macOS 전용 능력에 닿아 나머지 앱엔 평범한 safe Rust 로 노출하는 작고 감사된 FFI 경계. 그게 'unsafe 를 safe 로 감싸기' 원칙이 출시 앱에서 진짜 일을 하는 거고 — 이제 왜 거기 있는지 정확히 읽을 수 있어. 이 native-bridge 자료 — objc2 frontmost 트릭, store-plugin 영속성, 웹 UI 와 네이티브 코어 사이의 얇은 다리 — 는 이제 Tauri Quest 랑 Ember & Cinder Quest 에서 정식으로 다뤄. read-along 말고 전체 walkthrough 가 필요하면 거기로.