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

clippy & rustfmt

~10 min · tooling, clippy, rustfmt, lint

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

두 도구가 Rust 코드의 보임새와 읽힘을 빚어: rustfmt 가 포맷하고, clippy 가 비평해. 둘 다 toolchain 에 딸려오고 둘 다 프로 Rust 에선 협상 불가야.

rustfmt: 하나의 진짜 포맷

cargo fmt 가 코드를 커뮤니티 표준으로 재포맷해. 설정 논쟁이 사실상 없어 — Rust 가 의도적으로 하나의 canonical 스타일을 가져서, 모든 Rust 코드베이스가 똑같이 보이고 코드 리뷰가 공백을 두고 안 싸워. 저장 시나 커밋마다 돌려; 포맷 질문은 그냥 해결됐어.

clippy: 린트 군대

cargo clippy 가 정확성을 넘어 관용구 로 가는 수백 개 린트를 돌려: 이터레이터여야 할 수동 루프, 필요 없는 .clone(), 더 단순한 형태 있는 match, 항상 참인 비교. 시니어 Rust 엔지니어가 매 줄을 리뷰하는 거 같아 — 그 조언을 따르는 게 관용적 Rust 를 배우는 제일 빠른 길 중 하나야.

fmt 가 스타일을 해결; clippy 가 관용구를 가르쳐. 커밋마다 cargo fmtcargo clippy 를 돌려. fmt 가 모든 스타일 논쟁을 없애고; clippy 가 비관용적 패턴을 잡고 종종 더 나은 법을 설명해. 같이 생태계 전체가 동의하는 공짜 상시 멘토야.

자동화해

cargo fmt --checkcargo clippy 를 CI 에 엮어 포맷 안 된 거나 린트 실패 코드가 병합 안 되게. 대부분 에디터가 저장 시 rustfmt 를 돌려. 목표는 스타일이랑 관용구가 리뷰어 주의가 아니라 툴링으로 강제되는 거 — 리뷰가 로직이랑 설계, 인간이 진짜 잘하는 것에 집중하게 풀어줘.

Code

커밋마다 돌릴 두 명령·bash
# 모든 파일을 canonical 스타일로 포맷 (커밋 전 돌려)
cargo fmt

# 파일 안 바꾸고 포맷 검사 (CI 용)
cargo fmt --check

# 관용구랑 흔한 실수 린트
cargo clippy

# CI 에서 clippy 경고를 에러로 취급
cargo clippy -- -D warnings

External links

Exercise

일부러 비관용적인 코드로 작은 프로그램을 써: 이터레이터 대신 수동 인덱스 루프, 불필요한 .clone(), 지저분한 포맷. cargo clippycargo fmt 를 돌리고 제안을 적용해. 각 clippy 린트마다 설명을 읽어 — 방금 무슨 관용구를 가르쳐줬어?
Hint
clippy 가 인덱스 루프를 .iter().enumerate() 로 바꾸고 불필요한 clone 을 빼라고 제안할 거고; fmt 가 공백을 고쳐. 각 제안에 근거가 딸려 와 — 그게 공짜 관용적-Rust 과외야.

Progress

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

댓글 0

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

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