Rust 는 단일 바이너리가 아니라 작은 도구상자로 와. 이름 세 개가 거의 모든 일을 하는데, 뭐가 뭔지 알면 헷갈릴 일이 확 줄어.
rustup — 버전 관리자
rustup 은 Rust 툴체인을 설치하고 전환해. Node 의 nvm, Python 의 pyenv 라고 생각하면 돼. 어떤 컴파일러 버전을 쓰는지, 어떤 릴리스 채널 (stable, beta, nightly) 인지, 어떤 컴파일 타겟 을 깔았는지 (ARM, WebAssembly 같은 데로 크로스컴파일하게) 관리해줘.
rustc — 진짜 컴파일러
rustc 는 .rs 소스를 바이너리로 바꾸는 프로그램이야. 손으로 직접 부를 일은 거의 없어 — 얘는 의존성이나 프로젝트 구조 개념이 아예 없거든. 파일을 컴파일해. 그게 다야. 직접 손댈 유일한 순간은 rustc --explain E0382 — 아무 에러 코드나 넣으면 풀 에세이를 뽑아줘.
cargo — 실제로 쓰는 그것
cargo 가 현관문이야. rustc 를 감싸고, crates.io 에서 의존성을 풀어오고, 테스트를 돌리고, 문서를 짓고, 프로젝트 구조를 이해해. Rust 생활의 95% 가 cargo 서브커맨드야: cargo new, cargo run, cargo build, cargo test, cargo check.
cargo check 가 제일 빠른 친구야. 바이너리를 안 만들고 프로젝트 전체를 타입 검사 + borrow 검사만 해 — 풀 cargo build 보다 훨씬 빨라. 작업하는 내내 계속 돌려; 풀 빌드는 진짜 뭔가 실행해야 할 때만 아껴 써.릴리스 채널 & edition
Rust 는 6주마다 새 stable 릴리스를 내 — 작고, 하위호환되고, 절대 안 무서워. nightly 는 feature flag 뒤에 숨은 불안정한 실험 기능용이고. 그것과 별개로, Cargo.toml 의 edition (2015 / 2018 / 2021 / 2024) 이 크레이트가 어떤 언어 관용구를 쓸지 골라. 새 컴파일러도 옛 edition 을 여전히 컴파일하니까 툴체인 업그레이드가 옛 코드를 깨는 일은 없어 — 새 edition 채택은 크레이트별로 네가 의도해서 내리는 선택이야. (예를 들어 Cinder 의 네이티브 코어는 2024 가 나왔는데도 edition 2021 위에서 굴러 — edition 은 opt-in 이지 러닝머신이 아니야.)