"serde는 다리 위에 서 있는 번역가야. Rust struct를 JSON으로, 다시 거꾸로 — 파싱 한 줄 안 짜게 해줘."
derive 하고 잊어
IPC 다리를 건너는 건 뭐든 평범한 데이터가 돼야 해. Rust에서 이걸 하는 크레이트가 serde야. struct나 enum에 #[derive(Serialize, Deserialize)]를 붙이면 serde가 변환 코드를 생성해: Serialize는 프론트엔드로 가게 하고(command 반환으로), Deserialize는 프론트엔드에서 오게 해(command 인자로). 수동 JSON 조립은 영원히 없어.
양방향 struct
command는 struct를 받고 struct를 반환할 수 있어. 프론트엔드가 평범한 객체를 보내면 네 Rust struct로 deserialize되고, command가 struct를 반환하면 웹뷰가 받는 평범한 객체로 serialize돼. 이게 풍부한 데이터가 깔끔하게 건너는 방식이야 — 양쪽 끝에서 타입 모양으로 생각하고, 중간의 선로 포맷은 serde가 처리해.
필드 이름을 프론트엔드에 맞춰
Rust struct는 snake_case 필드(created_at)를 쓰는데, 네 TypeScript는 아마 camelCase(createdAt)를 원해. struct에 #[serde(rename_all = "camelCase")]를 더하면 serde가 선로의 모든 필드 이름을 바꿔. 이제 Rust는 관용을 지키고 프론트엔드는 기대하는 case를 받아 — 인자 관례랑 같은 철학을 데이터 모양에 적용한 거야.