필수 도구 생태계: C# 개발자를 위한 가이드
학습 목표: C# 개발 환경에서 익숙하게 사용하던 도구들이 Rust에서는 어떤 형태로 존재하는지 알아봅니다. 린트(Lint), 포맷팅, 문서화, 그리고 생산성을 높여주는 VS Code 확장 프로그램까지 Rust 개발의 효율을 극대화하는 도구 세트를 구성합니다.
1. C# 도구 vs Rust 도구 일대일 매칭
| C# (Visual Studio/.NET) | Rust (CLI/Tooling) | 주요 역할 |
|---|---|---|
| Roslyn 분석기 | Clippy | 코드 품질 검사 및 개선 제안 |
dotnet format | rustfmt | 일관된 코딩 스타일 자동 적용 |
| XML 주석 문서 | cargo doc | 소스 코드 기반의 HTML 문서 생성 |
| OmniSharp / IntelliSense | rust-analyzer | 코드 완성 및 타입 정보 제공 |
dotnet watch | cargo-watch | 파일 수정 시 자동 빌드/테스트 |
dotnet audit | cargo-audit | 의존성 라이브러리의 보안 취약점 점검 |
2. Clippy: 당신의 곁에 있는 코드 리뷰어
Clippy는 단순히 문법 에러만 잡아주는 것이 아니라, 더 Rust다운(Idiomatic) 코드를 짤 수 있게 도와줍니다.
- 예시:
if x == true { ... }→ "그냥if x { ... }라고 쓰세요." - 예시:
vec.len() == 0→ "대신.is_empty()를 쓰는 게 더 직관적입니다." - 예시:
for i in 0..vec.len() { ... vec[i] ... }→ "인덱스 대신 반복자를 직접 쓰세요."
3. cargo doc: 테스트가 가능한 문서
Rust는 문서 작성을 언어 차원에서 강력하게 지원합니다. 특히 문서 안에 포함된 예제 코드(```)는 실제로 컴파일되고 실행됩니다. 문서가 틀리면 테스트가 실패하므로, 항상 최신의 정확한 문서를 유지할 수 있습니다.
#![allow(unused)] fn main() { /// 두 수의 합을 구합니다. /// /// # 예제 /// ``` /// let result = my_crate::add(2, 3); /// assert_eq!(result, 5); // 이 코드는 실제로 테스트됩니다. /// ``` pub fn add(a: i32, b: i32) -> i32 { a + b } }
4. 추천 VS Code 확장 프로그램
- rust-analyzer: 필수 중의 필수. 강력한 코드 완성 기능을 제공합니다.
- CodeLLDB: 디버깅을 위한 도구입니다. Visual Studio의 디버거와 유사한 경험을 제공합니다.
- Even Better TOML:
Cargo.toml파일을 다룰 때 매우 편리합니다. - Error Lens: 에러와 경고를 코드 옆에 바로 보여주어 빠르게 수정할 수 있게 돕습니다.
💡 실무 팁: cargo watch 활용하기
터미널을 하나 띄워두고 cargo watch -x check를 실행해 보세요. 파일을 저장할 때마다 자동으로 타입 체크를 수행해주므로, 굳이 수동으로 빌드해보지 않아도 즉각적으로 피드백을 받을 수 있습니다.