C.W.K.
Stream
Lesson 02 of 06 · published

rustup, cargo, rustc — 툴체인

~10 min · foundations, cargo, rustup, tooling

Level 0Rust 호기심러
0 XP0/80 lessons0/19 achievements
0/100 XP to next level100 XP to go0% complete

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.tomledition (2015 / 2018 / 2021 / 2024) 이 크레이트가 어떤 언어 관용구를 쓸지 골라. 새 컴파일러도 옛 edition 을 여전히 컴파일하니까 툴체인 업그레이드가 옛 코드를 깨는 일은 없어 — 새 edition 채택은 크레이트별로 네가 의도해서 내리는 선택이야. (예를 들어 Cinder 의 네이티브 코어는 2024 가 나왔는데도 edition 2021 위에서 굴러 — edition 은 opt-in 이지 러닝머신이 아니야.)

Code

툴체인 설치하고 확인하기·bash
# rustup 설치 (딸려서 stable rustc + cargo 도)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# 뭐 깔렸는지 확인
rustc --version   # rustc 1.95.0 (...)
cargo --version   # cargo 1.95.0 (...)
rustup show       # 활성 툴체인 + 설치된 타겟

# 나중에 아무 때나 업데이트
rustup update
Cargo.toml — edition 이 사는 곳·toml
[package]
name = "hello-rust"
version = "0.1.0"
edition = "2024"   # 최신 관용구로 opt-in; 2021 도 아직 사방에 있어

[dependencies]
# crates.io 의 크레이트는 여기 들어가, 예를 들면:
# serde = { version = "1", features = ["derive"] }

External links

Exercise

rustup 설치하고 rustc --version, cargo --version, rustup show 돌려봐. 이제 rustc --explain E0382 도 돌려봐 — 아직 그 에러 안 만났지만 컴파일러가 그거에 대해 뭐라는지 미리 읽어둬. 한 문장으로, E0382 가 뭐에 관한 거야?
Hint
E0382 는 'moved value 사용' 에러 — 초보가 부딪히는 제일 흔한 거야. 지금 읽어두면 Ownership 트랙에서 안 놀라.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고
💛 by 똘이warm

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.