"command 안에선 Tauri가 필요한 걸 쥐여줘. command 밖에선 — setup, 스레드, 타이머 — AppHandle을 들고 앱에 다시 손을 뻗어."
들고 다니는 핸들
command는 State랑 Window를 주입받지만, 많은 코드가 command 밖에서 돌아: setup 훅, 백그라운드 스레드, async 태스크, OS 이벤트 콜백. 거기선 AppHandle을 들어 — 돌아가는 애플리케이션으로 가는 싸고 복제 가능한 참조야. 복제해서 스레드로 옮기면, 어디서든 이벤트를 emit하고, managed state를 읽고, 창을 찾을 수 있어.
Manager 트레이트가 도구상자야
쓸모 있는 메서드 대부분 — .state::<T>(), .emit(), .get_webview_window(), 앱 디렉터리용 .path() — 은 Manager 트레이트에서 와. App, AppHandle, Window, WebviewWindow가 다 그걸 구현해서, setup의 &App에 있든 스레드 깊은 곳의 AppHandle에 있든 같은 도구상자를 쓸 수 있어. use tauri::Manager;가 그 메서드들을 켜는 import야.
주입 없이 state에 닿기
command 안에선 State<T>를 파라미터로 받아. 밖에선 핸들에서 가져와: app.state::<T>()가 같은 managed 인스턴스를 돌려줘. 백그라운드 루프가 command가 읽는 같은 설정을 읽거나, setup 훅이 캐시를 미리 채우는 방식이 이거야. managed 값 하나, 코드가 도는 곳에 따라 닿는 방법 둘.