Rust 도구와 개발 환경 설정
Rust를 처음 시작하면 낯선 이름이 한꺼번에 쏟아져요. rustup, rustc, cargo, clippy, rustfmt, rust-analyzer. 코드 한 줄 쓰기 전에 도구를 열 개쯤 깔아야 할 것 같은 기분이 들죠. 다행히 설치 프로그램 하나만 실행하면 거의 다 들어오고, 도구마다 맡은 일도 딱 하나씩이에요.
주방에 비유해 볼게요. rustup은 조리 도구를 배달하고 새것으로 바꿔 주는 가게예요. cargo는 모든 일을 지휘하는 셰프고요. clippy는 어깨 너머로 봐 주는 친절한 선생님이고, rustfmt는 조리대를 깔끔하게 정리해 줘요. 이 페이지에서는 도구 하나하나를 설명하고, 운영체제별로 무엇이 필요한지, Rust 개발자가 매일 이 도구들을 어떻게 쓰는지 알려 드릴게요.
아직 Rust를 설치하지 않았다면, 단계별 설치 방법과 첫 프로젝트는 Rust 시작하기에 있어요. cargo의 기본(cargo new, cargo add, Cargo.toml)은 Cargo와 크레이트에서 다뤄요. 이 페이지는 두 내용을 바탕으로 이어 가요.
전체 그림
섹션 제목: “전체 그림”도구 상자 전체를 표 하나로 정리하면 이래요.
| 도구 | 하는 일 | rustup에 포함? |
|---|---|---|
rustup |
Rust를 설치하고, 업데이트하고, 버전을 바꿔 줘요 | 이게 바로 설치 프로그램이에요 |
rustc |
컴파일러: .rs 파일을 실행할 수 있는 프로그램으로 바꿔요 |
예 |
cargo |
빌드, 실행, 테스트, 크레이트 추가. 거의 모든 일을 이걸로 해요 | 예 |
rustup doc |
표준 라이브러리 문서와 Rust Book을 브라우저에서 오프라인으로 열어요 | 예 (default 프로필) |
clippy |
린터: 버그나 더 간단하게 쓸 수 있는 코드를 짚어 줘요 | 예 (default 프로필) |
rustfmt |
포매터: 코드를 표준 스타일로 다시 써 줘요 | 예 (default 프로필) |
rust-analyzer |
“에디터의 두뇌”: 자동 완성, 실시간 에러 표시, 타입 힌트, 정의로 이동 | 기본으로는 아니에요. VS Code 확장이 자체 사본을 가져와요 |
| 디버거 | 프로그램을 특정 줄에서 멈추고 변수를 들여다봐요 | 아니요. LLDB나 GDB를 직접 설치해요 (또는 디버거가 들어 있는 에디터 확장을 써요) |
프로필(profile)은 rustup이 한 번에 설치하는 구성 요소의 묶음이에요. 보통 설치하면 default 프로필이 쓰이는데, 컴파일러와 cargo 외에 문서, clippy, rustfmt까지 함께 깔려요. 누군가 minimal 프로필로 컴퓨터를 설정했다면 cargo clippy가 설치되지 않았다고 나올 거예요. 그럴 땐 명령 하나면 돼요: rustup component add clippy rustfmt.
rustup doc --std를 한 번 실행해 보세요. 표준 라이브러리 문서 전체가 내 디스크에서 바로 열리기 때문에, 비행기 안이나 인터넷이 느린 곳에서도 볼 수 있어요. 내 프로젝트와 프로젝트가 쓰는 모든 크레이트의 문서를 보려면 cargo doc --open을 실행하세요(자세한 내용은 Rust 문서화에 있어요).
설치 전에: 운영체제별로 필요한 것
섹션 제목: “설치 전에: 운영체제별로 필요한 것”Rust는 코드를 컴파일한 뒤 마지막 단계에서 링커(linker)가 필요해요. 링커는 컴파일된 조각들을 실행할 수 있는 파일 하나로 합쳐 주는 프로그램이에요. Rust는 시스템의 C 도구에 들어 있는 링커를 빌려 써요. 그래서 운영체제마다 준비할 것이 조금씩 있어요.
| 운영체제 | 설치할 것 | 방법 |
|---|---|---|
| Windows (권장) | Visual Studio의 C++ 도구: MSVC 링커와 Windows SDK | Visual Studio 설치 프로그램에서 C++를 사용한 데스크톱 개발(Desktop development with C++) 워크로드를 선택해요 |
| Windows (대안) | GNU 툴체인 (MinGW) | rustup toolchain install stable-gnu |
| Windows (또 다른 방법) | WSL: Windows 안에서 돌아가는 진짜 Linux | wsl --install을 실행한 뒤 Linux 방법을 따라가요 |
| macOS | Apple의 커맨드 라인 도구 (C 컴파일러와 링커 포함) | xcode-select --install |
| Debian / Ubuntu | C 컴파일러와 링커 | sudo apt install build-essential |
| Fedora | C 컴파일러와 링커 | sudo dnf install gcc |
솔직하게 몇 가지 덧붙일게요.
- Windows와 Visual Studio. 직접 찾아서 설치할 필요는 없어요. Visual Studio가 없으면
rustup-init.exe가 대신 설치해 주겠다고 물어봐요. 이때 설치되는 건 Visual Studio Community인데, 개인, 학생, 오픈 소스에는 무료지만 모든 회사에서 무료로 쓸 수 있는 건 아니에요. 회사에서 설치한다면 어떤 에디션을 쓰는지 먼저 물어보세요. “C++를 사용한 데스크톱 개발” 워크로드만 선택하면 Rust에 필요한 건 모두 갖춰져요. - Windows와 GNU. 기본값은 MSVC 툴체인이고, 다른 Windows 소프트웨어와도 가장 잘 맞아요. GNU 툴체인은 간단한 프로그램이라면 Visual Studio 없이도 돼요. 하지만 C 코드가 들어 있는 크레이트는 MinGW가 포함된 MSYS2까지 설치해야 빌드되는 경우가 많아요. 대부분은 MSVC를 그대로 쓰는 게 좋아요.
- WSL은 Windows에서 Linux 환경을 쓰고 싶을 때(예를 들어 서버가 Linux일 때) 아주 좋은 선택이에요. WSL 안에서는 Windows 쪽 설치와 별개로, 일반 Linux 명령으로 Rust를 설치해요.
- Linux 추가 패키지. 인기 있는 크레이트 중에는 시스템 라이브러리를 쓰는 것도 있어요. 빌드할 때
pkg-config나 OpenSSL 관련 에러가 나면, Ubuntu에서는pkg-config와libssl-dev도 설치하세요.
이 준비가 끝나면 Rust 시작하기의 설치 단계를 따라가면 돼요.
rustup 실전 사용법
섹션 제목: “rustup 실전 사용법”Rust를 설치한 다음부터는 rustup으로 관리해요. 새 stable 버전이 6주마다 나오기 때문에, 업데이트는 자연스러운 습관이에요.
rustup update # 설치된 모든 툴체인(과 rustup 자신)을 업데이트rustup show # 무엇이 설치되어 있고, 여기서 어떤 툴체인이 활성화되어 있는지rustup show를 실행하면 이런 내용이 나와요(일부 생략).
Default host: x86_64-unknown-linux-gnu
installed toolchains--------------------stable-x86_64-unknown-linux-gnu (active, default)
active toolchain----------------name: stable-x86_64-unknown-linux-gnuactive because: it's the default toolchainstable, beta, nightly
섹션 제목: “stable, beta, nightly”툴체인(toolchain)은 rustc, cargo와 관련 도구를 한 벌로 묶은 거예요. Rust에는 릴리스 채널이 세 가지 있어요.
| 채널 | 무엇인가요 | 언제 쓰나요 |
|---|---|---|
| stable | 6주마다 나오는 공식 릴리스 | 거의 항상. 여러분에게 필요한 건 이거예요 |
| beta | 테스트 중인 다음 stable 릴리스 | 다음 릴리스 전에 내 프로젝트가 잘 되는지 확인하고 싶을 때 |
| nightly | 매일 밤 빌드되며, 실험적인 기능이 들어 있어요 | 어떤 도구나 크레이트가 요구할 때, 또는 새 기능을 써 보고 싶을 때 |
툴체인 여러 개를 나란히 설치해 둘 수 있어요.
rustup toolchain install nightly # stable 옆에 nightly 설치cargo +nightly build # 이 명령 하나만 nightly로 실행rustup default stable # 어디서나 쓸 기본 툴체인 선택프로젝트별로 툴체인 고정하기
섹션 제목: “프로젝트별로 툴체인 고정하기”프로젝트에 특정 Rust 버전이 필요할 때가 있어요. 프로젝트 폴더에 rust-toolchain.toml 파일을 두면, 그 폴더에서 작업할 때마다 rustup이 자동으로 툴체인을 바꿔 줘요.
[toolchain]channel = "1.97.0"components = ["clippy", "rustfmt"]targets = ["wasm32-unknown-unknown"]이 파일을 git에 커밋하세요. 그러면 팀원 모두(그리고 CI도) 똑같은 컴파일러를 쓰게 되고, 없으면 rustup이 알아서 설치해 줘요. 작은 프로젝트는 대부분 이 파일 없이 최신 stable을 그냥 써요.
구성 요소와 타깃
섹션 제목: “구성 요소와 타깃”구성 요소(component)는 툴체인에 추가하는 부품이에요. 타깃(target)을 추가하면 다른 종류의 기계용으로 컴파일할 수 있어요.
rustup component add clippy rustfmt rust-src # rust-src: rust-analyzer가 쓰는 std 소스 코드rustup component list --installed # 설치된 것 확인rustup target add wasm32-unknown-unknown # 브라우저용으로 Rust 컴파일WebAssembly를 하려면 wasm32-unknown-unknown 타깃이 필요해요.
에디터와 IDE
섹션 제목: “에디터와 IDE”Rust는 어떤 텍스트 에디터로도 쓸 수 있지만, rust-analyzer(또는 비슷한 엔진)가 있는 에디터를 쓰면 차이가 엄청나요. 타이핑하는 동안 에러가 보이고, 변수 옆에 타입이 표시되고, 어떤 함수든 정의로 바로 이동할 수 있어요. 초보자에게는 참을성 많은 과외 선생님이 옆에 있는 것과 같아요.
| 에디터 | 가격 | Rust 지원 | 이런 사람에게 좋아요 |
|---|---|---|---|
| VS Code + rust-analyzer | 무료 | 공식 rust-analyzer 확장 | 대부분의 사람. 가장 인기 있는 선택이고, 대부분의 가이드가 VS Code를 기준으로 해요 |
| RustRover (JetBrains) | 비상업적 용도(학습, 취미 프로젝트, 무급 오픈 소스)는 무료. 상업적 작업에는 유료 구독이 필요해요 | 기본 내장. JetBrains 자체 Rust 엔진과 디버거가 들어 있어요 | 모든 기능이 갖춰진 IDE를 좋아하는 사람 |
| Zed | 무료, 오픈 소스 | 기본 내장 (rust-analyzer를 쓰고, 디버깅은 CodeLLDB) | 아주 빠르고 현대적인 에디터를 원하는 사람 |
| Neovim / Helix | 무료, 오픈 소스 | rust-analyzer로 지원. Helix는 거의 설정 없이 되고, Neovim은 약간의 설정이 필요해요 | 터미널에서 작업하는 걸 좋아하는 사람 |
| Visual Studio | 유료 에디션과 무료 Community | 공식 Rust 지원 없음 | Rust 작업에는 잘 맞지 않아요. 링커용 C++ Build Tools만 있으면 돼요 |
RustRover의 라이선스 조건은 바뀔 수 있으니, 회사에서 쓰기 전에 RustRover 페이지에서 최신 규정을 확인하세요.
Neovim, Helix 같은 에디터에서는 rustup component add rust-analyzer로 rust-analyzer 프로그램 자체를 설치하세요.
추천 VS Code 확장
섹션 제목: “추천 VS Code 확장”VS Code를 쓴다면 이 네 가지면 거의 다 해결돼요.
- rust-analyzer: 꼭 필요한 확장이에요. 자동 완성, 에러, 힌트, 리팩터링을 해 줘요.
- CodeLLDB: 브레이크포인트를 걸고 코드를 한 줄씩 따라가는 디버거예요. LLDB 사본이 함께 들어 있어요.
- Even Better TOML:
Cargo.toml에 색을 입히고 검사해 줘요. - Error Lens (선택): 마우스를 올리지 않아도 에러 메시지를 해당 줄에 바로 보여 줘요. 아주 좋아하는 사람도 있고, 너무 시끄럽다는 사람도 있어요.
디버깅
섹션 제목: “디버깅”CodeLLDB로 브레이크포인트 걸기
섹션 제목: “CodeLLDB로 브레이크포인트 걸기”VS Code에 rust-analyzer와 CodeLLDB를 설치하면 fn main 위와 모든 테스트 위에 작은 Run | Debug 링크가 생겨요. 줄 번호 왼쪽 끝을 클릭해서 빨간 브레이크포인트 점을 찍고 Debug를 클릭하세요. 프로그램이 브레이크포인트에서 멈추고, 모든 변수를 살펴보면서 코드를 한 줄씩 실행해 볼 수 있어요.
다시 쓸 수 있는 설정이 필요하다면(예를 들어 커맨드 라인 인자를 넘기고 싶을 때) .vscode/launch.json을 만드세요.
{ "version": "0.2.0", "configurations": [ { "type": "lldb", "request": "launch", "name": "Debug task_queue", "cargo": { "args": ["build", "--bin=task_queue"] }, "args": [], "cwd": "${workspaceFolder}" } ]}cargo 부분은 CodeLLDB에게 먼저 cargo로 프로그램을 빌드한 다음 디버거에서 실행하라고 알려 줘요. task_queue를 여러분의 패키지 이름으로 바꾸고, 프로그램 인자가 있으면 "args"에 넣으세요. F5를 누르면 시작해요.
dbg!로 빠르게 확인하기
섹션 제목: “dbg!로 빠르게 확인하기”항상 본격적인 디버거가 필요한 건 아니에요. dbg! 매크로는 식과 그 값, 그리고 이 매크로를 쓴 파일과 줄 위치를 출력해요. 게다가 값을 그대로 돌려주기 때문에, 코드의 동작을 바꾸지 않고 거의 무엇이든 감쌀 수 있어요.
fn apply_discount(price: u32, percent: u32) -> u32 { price - price * percent / 100}
fn main() { let prices = [120, 45, 80];
let total: u32 = dbg!(prices.iter().sum()); let final_price = dbg!(apply_discount(total, 10));
println!("10% 할인 후 합계: {final_price}");}실행 결과:
10% 할인 후 합계: 221dbg!가 출력한 줄은 어디로 갔을까요? dbg!는 println!처럼 stdout(표준 출력)이 아니라 stderr(표준 에러, 에러용 출력 스트림)에 출력해요. 그래서 디버그용 메모와 진짜 출력이 섞이지 않아요. 터미널이나 Playground의 “Standard Error” 영역에서는 이런 줄도 볼 수 있어요.
[src/main.rs:8:22] prices.iter().sum() = 245[src/main.rs:9:23] apply_discount(total, 10) = 221다 쓴 dbg!는 지워 주세요. 여러분을 위한 도구이지, 사용자에게 보여 줄 건 아니니까요.
매일 하는 코드 품질 관리
섹션 제목: “매일 하는 코드 품질 관리”명령 세 개만 있으면 코드를 건강하게 유지할 수 있어요. 빠르니까 자주 실행하세요.
cargo check: 빠른 피드백
섹션 제목: “cargo check: 빠른 피드백”cargo check는 실행할 프로그램을 만들지 않고 컴파일 에러만 찾기 때문에 cargo build보다 훨씬 빨라요. 몇 분마다 실행하는 개발자도 많아요. (에디터의 rust-analyzer는 저장할 때마다 이런 검사를 대신 해 줘요.)
cargo fmt: 스타일 논쟁은 이제 그만
섹션 제목: “cargo fmt: 스타일 논쟁은 이제 그만”cargo fmt는 프로젝트의 모든 파일을 표준 Rust 스타일로 다시 써 줘요. 이제 팀원 누구도 띄어쓰기나 줄 바꿈을 고민할 필요가 없어요. 이런 코드를:
struct Player{name:String,score:u32}fn top(players:&[Player])->Option<&Player>{players.iter().max_by_key(|p|p.score)}이렇게 바꿔 줘요.
struct Player { name: String, score: u32,}fn top(players: &[Player]) -> Option<&Player> { players.iter().max_by_key(|p| p.score)}대부분의 에디터는 저장할 때마다 자동으로 실행할 수 있어요. VS Code에서는 “Format On Save” 설정을 켜세요.
cargo clippy: 친절한 코드 리뷰
섹션 제목: “cargo clippy: 친절한 코드 리뷰”Clippy는 잘못됐거나, 느리거나, 필요 이상으로 읽기 어려운 코드 패턴을 수백 가지나 알고 있어요. 아래는 문제없이 잘 돌아가는 작은 프로그램이에요.
fn main() { let tasks: Vec<&str> = vec!["문서 쓰기", "버그 고치기"];
if tasks.len() == 0 { println!("할 일이 없어요!"); } else { println!("남은 작업: {}개", tasks.len()); }}그런데 cargo clippy는 제안을 하나 해요.
warning: length comparison to zero --> src/main.rs:4:8 |4 | if tasks.len() == 0 { | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `tasks.is_empty()` | = note: `#[warn(clippy::len_zero)]` on by default경고 메시지는 영어로 나오지만 내용은 간단해요. “길이를 0과 비교하는 대신 tasks.is_empty()를 쓰면 더 분명하다”는 뜻이에요. 모든 경고에는 이름(여기서는 len_zero)이 있어서, Clippy 린트 목록(영어)에서 찾아보면 더 자세한 설명을 읽을 수 있어요. 고친 버전은 이래요.
fn main() { let tasks: Vec<&str> = vec!["문서 쓰기", "버그 고치기"];
if tasks.is_empty() { println!("할 일이 없어요!"); } else { println!("남은 작업: {}개", tasks.len()); }}실행 결과:
남은 작업: 2개cargo clippy --fix를 쓰면 많은 제안을 자동으로 적용할 수 있어요. Clippy가 여러분 상황에 항상 맞는 건 아니지만, 맞을 때가 충분히 많아서 경고를 하나하나 읽다 보면 Rust다운 코드를 빠르게 배울 수 있어요.
알아 두면 좋은 cargo 추가 도구
섹션 제목: “알아 두면 좋은 cargo 추가 도구”누구나 새 cargo 하위 명령을 만들 수 있어요. 설치는 cargo install로 하는데, 소스를 내려받아 컴파일한 다음 프로그램을 ~/.cargo/bin(Windows에서는 %USERPROFILE%\.cargo\bin)에 넣어 줘요. 첫날부터 필요한 건 하나도 없지만, 알아 두면 좋아요. 아래 링크는 모두 영어 문서예요.
| 도구 | 하는 일 | 설치 | 실행 |
|---|---|---|---|
| bacon | 저장할 때마다 옆 터미널에서 check, clippy, 테스트를 다시 실행해요 | cargo install --locked bacon |
bacon, bacon clippy, bacon test |
| cargo-watch | 저장할 때마다 원하는 cargo 명령을 실행해요. 아직 동작하지만 더는 업데이트되지 않고, 개발자가 bacon을 추천해요 | cargo install --locked cargo-watch |
cargo watch -x check |
| cargo-nextest | 더 빠르고 출력이 보기 좋은 테스트 실행기예요 | cargo install --locked cargo-nextest |
cargo nextest run |
| cargo-audit | Cargo.lock을 알려진 보안 권고와 대조해 검사해요 |
cargo install cargo-audit |
cargo audit |
| cargo-outdated | 새 버전이 나온 의존성을 보여 줘요 | cargo install --locked cargo-outdated |
cargo outdated |
| cargo-edit | Cargo.toml의 버전을 올려 주는 cargo upgrade를 추가해요(cargo add는 이미 내장되어 있어요) |
cargo install cargo-edit |
cargo upgrade |
| cargo-expand | 매크로와 #[derive]가 어떤 코드로 바뀌는지 보여 줘요 |
cargo install cargo-expand |
cargo expand |
| cargo-binstall | 컴파일하는 대신 미리 만들어진 바이너리를 내려받아서, 몇 초 만에 설치가 끝나요 | cargo install cargo-binstall |
cargo binstall bacon |
cargo install은 소스에서 컴파일하기 때문에, 큰 도구는 처음 설치할 때 몇 분 걸릴 수 있어요. 정상이에요. 나중에 업데이트하려면 같은 설치 명령을 다시 실행하면 돼요. 설치한 도구 목록은 cargo install --list로 볼 수 있어요. 프로파일러나 벤치마크처럼 속도에 관한 도구는 성능를 참고하세요.
설치 없이 쓰기: Rust Playground
섹션 제목: “설치 없이 쓰기: Rust Playground”Rust Playground(play.rust-lang.org)는 브라우저에서 Rust를 실행해 줘요. 이 사이트의 “직접 실행해 보기” 버튼을 누르면 모두 여기로 열려요. 간단한 실험을 하거나, 질문할 때 코드 조각을 공유하거나, 아무것도 설치할 수 없는 컴퓨터에서 공부할 때 딱이에요.
Playground로 할 수 있는 것:
- stable, beta, nightly에서 debug 또는 release 빌드로 코드를 실행해요.
- crates.io에서 가장 많이 다운로드된 크레이트 100개(그리고 Rust Cookbook이 쓰는 크레이트와 그 의존성)를 쓸 수 있어요.
serde,rand,regex,tokio같은 것들이요. - Tools 메뉴에서
rustfmt와 Clippy를 실행해요. - 코드를 링크로 공유해요.
할 수 없는 것:
- 파일을 두 개 이상 쓸 수 없어요.
Cargo.toml이 없어서 다른 크레이트나 버전을 고를 수도 없어요. - 네트워크에 접속할 수 없어요. 웹 페이지를 내려받는 코드는 실패해요.
- 내 파일을 다루거나 오래 실행할 수 없어요. 시간과 메모리에 제한이 있어요.
- 입력을 받는 프로그램은 불편해요. 프로그램이 도는 동안 작은 입력 칸이 생기긴 하지만, 간단한 테스트 이상으로는 쓰기 어색해요. 이 사이트의 예제는 입력을 받지 않아서 클릭 한 번이면 실행돼요.
Playground가 답답해지면 cargo new로 로컬 프로젝트를 만드는 데 1분이면 충분해요.
새 컴퓨터용 준비 체크리스트
섹션 제목: “새 컴퓨터용 준비 체크리스트”새 컴퓨터를 세팅하나요? 이 목록을 한 번 쭉 따라가 보세요.
- 운영체제별 준비물을 설치해요: Visual Studio C++ 도구(Windows),
xcode-select --install(macOS),build-essential/gcc(Linux). - rustup.rs에서 Rust를 설치한 다음, 새 터미널을 열어요.
- 확인해요:
rustc --version과cargo --version. - 매일 쓰는 도구가 있는지 확인해요:
rustup component add clippy rustfmt. - rust-analyzer가 되는 에디터를 설치해요. VS Code라면 rust-analyzer와 CodeLLDB 확장을 추가해요.
- 에디터에서 저장할 때 자동 포맷을 켜요.
cargo new hello로 테스트 프로젝트를 만들고, 그 안에서cargo run,cargo clippy,cargo fmt를 실행해 봐요.- 한두 달에 한 번
rustup update를 실행하도록 알림을 맞춰 둬요. - 선택: 코딩하면서 바로바로 피드백을 받고 싶다면
cargo install --locked bacon.
연습 문제
섹션 제목: “연습 문제”1. 도구 상자 점검하기
섹션 제목: “1. 도구 상자 점검하기”내 컴퓨터에서 다음 명령을 하나씩 실행해서, 어느 것도 “not installed”(설치되지 않음)라고 나오지 않는지 확인하세요: rustup show, cargo clippy --version, cargo fmt --version. 그다음 오프라인 표준 라이브러리 문서를 열어서 Vec 페이지를 찾아보세요. 힌트: rustup doc에는 타입의 전체 경로 같은 주제를 넘길 수 있어요.
정답 보기
rustup showcargo clippy --versioncargo fmt --versionrustup doc std::vec::Vec--version 명령은 각각 버전 번호를 출력해요. 버전 대신 에러가 나오는 게 있다면 rustup component add clippy나 rustup component add rustfmt로 빠진 부분을 설치하세요. 마지막 명령은 내 디스크에 있는 Vec 페이지를 브라우저로 바로 열어요. rust-docs가 설치되지 않았다고 나오면 먼저 rustup component add rust-docs를 실행하세요.
2. Clippy에게 배우기
섹션 제목: “2. Clippy에게 배우기”새 프로젝트를 만들고, Clippy 섹션에 있는 작업 프로그램의 첫 번째 버전을 src/main.rs에 붙여 넣으세요. cargo clippy를 실행해서 경고를 읽은 다음, Clippy가 직접 고치게 해 보세요. 힌트: 제안을 자동으로 적용하는 플래그가 있어요.
정답 보기
cargo new task_queuecd task_queue# 프로그램을 src/main.rs에 붙여 넣은 다음:cargo clippycargo clippy --fix --allow-dirtycargo clippy첫 번째 cargo clippy는 len_zero 경고를 보여 줘요. cargo clippy --fix는 tasks.len() == 0을 tasks.is_empty()로 고쳐 줘요. --allow-dirty 플래그는 아직 git에 커밋하지 않은 파일도 고칠 수 있게 허락하는 옵션이에요. 마지막 실행에서는 경고가 하나도 나오지 않아요.
- rustup은 Rust를 설치·업데이트하고 툴체인을 바꿔 줘요. cargo는 빌드, 실행, 테스트, 크레이트 추가를 맡고, 그 밑에서 rustc가 컴파일러로 일해요.
- 운영체제마다 먼저 링커가 필요해요. Windows는 Visual Studio C++ 도구, macOS는
xcode-select --install, Linux는build-essential이나gcc예요. - 기본은 stable이에요. 프로젝트에서 버전을 꼭 고정해야 할 때만
rust-toolchain.toml을 쓰고, nightly 명령을 한 번만 쓸 때는cargo +nightly를 쓰세요. - rust-analyzer가 되는 에디터를 쓰세요. 가장 흔한 조합은 VS Code + rust-analyzer + CodeLLDB예요.
cargo check는 자주,cargo fmt와cargo clippy는 커밋할 때마다 실행하세요. 빠르게 값을 볼 땐dbg!, 까다로운 버그는 디버거로 잡아요.- Playground는 실험과 공유에 훌륭하지만, 파일 하나, 네트워크 없음, 인기 크레이트만이라는 한계가 있어요.
이해도 점검
섹션 제목: “이해도 점검”이해도 점검
1. stable 옆에 nightly 툴체인을 설치하려면 어떤 도구를 쓰나요?
2. Windows에서 링커를 찾을 수 없다며 빌드가 실패해요. 무엇이 빠졌을 가능성이 가장 클까요?
3. dbg!는 어디에 출력하나요?
4. 다음 중 Rust Playground가 할 수 없는 것은 무엇일까요?
점수: 0 / 4
더 알아보기
섹션 제목: “더 알아보기”- Install Rust — rust-lang.org (영어): 모든 플랫폼용 공식 설치 프로그램과 Windows,
PATH, 제거 방법에 관한 안내예요. - The rustup book (영어): 툴체인, 채널, 구성 요소, 프로필,
rust-toolchain.toml, 크로스 컴파일 타깃을 다뤄요. - The Cargo Book (영어):
cargo install과 모든 명령의 옵션을 포함해, cargo의 모든 것을 설명해요. - rust-analyzer 매뉴얼 (영어): VS Code, Neovim, Helix, Emacs 등에서 rust-analyzer를 설정하는 방법과 모든 설정 항목이에요.
- Clippy 문서 (영어): Clippy를 실행하고 설정하는 방법, 그리고 전체 린트 목록과 각 린트의 의미로 가는 링크가 있어요.