"borrow checker랑 싸워서 이길 필요 없어. command 하나 출시하면 돼. 그 둘은 아주 다른 목표야."
널 생산적으로 만드는 다섯 가지
Rust의 작은 조각만 알아도 쓸모 있는 Tauri command를 짤 수 있어. 그 조각이 이거야:
- 소유권 & 빌림. 모든 값엔 주인이 딱 하나야. 넘기면 이동(move)해(예전 이름은 더 못 써), 아니면 참조로 빌려줘: 읽기는
&T, 수정은&mut T. 컴파일러가 이걸 강제해서 use-after-free나 데이터 레이스가 안 생겨. 대부분의 command는 소유된 인자를 받고 소유된 값을 반환해 — 제일 단순한 경우야. - null 없음 —
Option<T>. 없을 수도 있는 값은Some(x)아니면None이야. 컴파일러가None경우를 처리하라고 강제해서 Rust 프로그램엔 null 포인터 놀람이 없어. - 예외 없음 —
Result<T, E>. 실패 가능한 연산은Ok(value)아니면Err(error)를 반환해. 이게 네 command가 반환하는 타입이고, resolve/reject Promise에 그대로 매핑돼. - struct + derive.
struct는 네 데이터 모양이고,#[derive(Serialize, Deserialize)]가 그걸 다리 너머로 보내는 코드를 자동 생성해. - String vs &str.
String은 소유된 늘어나는 문자열,&str은 빌린 뷰야. command 인자로String을 받으면 lifetime을 안 생각해도 돼.
컴파일러는 엄한 과외선생이지 적이 아냐
Rust 에러 메시지는 유난히 좋아 — 정확한 고침을 알려줄 때가 많아. borrow checker가 불평하면, 진짜 버그 부류(dangling 참조, 레이스)를 존재하기 전에 잡는 거야. 빨간 줄을 공짜 시니어 리뷰어로 대해. ? 연산자도 여기서 네 친구야: Ok를 풀거나 Err를 조기 반환해서, 장황한 에러 처리를 한 글자로 바꿔.
더 원할 때
이건 생존이지 숙달이 아냐 — 일부러. trait, lifetime, 제네릭, iterator, async 내부: 그건 배울 가치 있는 언어 하나만큼이고, /cwk-quests/rust-quest에서 자기 퀘스트를 받아. 첫 command 열 개 엮는 덴 그거 하나도 필요 없어. 먼저 만들고, 나중에 깊어져.