"command는 무상태 함수야. 함께 뭔가 기억해야 할 때, 앱한테 기억을 줘: managed state."
한 번 등록, 어디서나 주입
command 혼자선 호출 사이에 모든 걸 잊어. 데이터를 공유하려면 — 설정, DB 풀, 카운터, 캐시 — Builder에서 .manage(value)로 관리해. 그 뒤엔 어떤 command든 tauri::State<T> 타입 파라미터를 선언해서 달라고 할 수 있어. Tauri가 그 파라미터를 보고 managed 인스턴스를 자동 주입해. 프론트엔드는 절대 안 넘겨. 전부 코어에 살아.
타입당 managed 값 하나
managed state는 타입으로 키가 매겨져. AppConfig 하나, Database 하나, Counter 하나를 관리해 — State<AppConfig>를 달라 하면 항상 같은 인스턴스를 줘. 같은 기반 타입짜리가 둘 필요하면 별개 newtype으로 감싸(예: struct ReadPool(Pool)랑 struct WritePool(Pool)) 타입 시스템이 구분하게. 이건 기능이야 — '어느 state?'를 모호하지 않게 만들어.
공유 참조야
네가 받는 건 managed 값으로 가는 공유 읽기 전용 핸들이야. 읽기만 하는 것(로드된 설정)엔 완벽해. 근데 그걸 통해 필드를 직접 못 바꾼다는 뜻이야 — borrow checker가 공유 변경을 안 허락해. state가 바뀌어야 할 땐 interior mutability(Mutex)를 꺼내는데, 그게 바로 다음 레슨이야. 지금은: 읽기 위주 state를 등록하고 필요한 command에 주입해.