# rustc, cargo 등의 명령어 맛보기

Rust 언어를 사용하기 위해 가장 먼저 접하게 되는 명령어는 rustc이다. rustc는 Rust 컴파일러로서 단일 소스 파일을 컴파일할 때 직접 사용할 수 있다. 예를 들어 main.rs 파일이 있다고 할 때, 터미널에서 rustc main.rs를 실행하면 현재 디렉터리에 main 실행 파일이 생성된다. 이 방식은 작은 예제 프로그램을 빠르게 테스트해볼 때 유용하지만, 프로젝트가 커질수록 번거로워지므로 일반적으로는 cargo라는 툴을 사용한다.

cargo는 Rust 생태계의 핵심으로, 프로젝트 생성부터 빌드, 실행, 테스트, 문서화, 의존성 관리 등을 간편하게 해준다. cargo new 명령어를 통해 새 프로젝트를 생성하고, 디렉터리를 이동한 뒤 cargo build나 cargo run을 실행하면 빌드와 실행이 자동으로 이루어진다. 아래 예시를 보면 간단한 과정을 확인할 수 있다.

```
cargo new hello_world
cd hello_world
cargo build
cargo run
```

위 순서를 거치면 Cargo.toml 파일과 src 디렉터리가 포함된 기본 구조의 프로젝트가 생성되며, 간단한 Hello, world! 코드를 실행할 수 있다. cargo build는 타겟 디렉터리에 바이너리를 생성하고, cargo run은 빌드 후 프로그램을 바로 실행해준다. 프로젝트가 커지더라도 cargo가 의존성 관리와 빌드 과정을 대신 처리해주므로 편리하다. cargo test 명령어를 사용하면 tests 모듈이나 테스트 함수가 포함된 코드를 자동으로 검사해주는데, 이는 Rust의 높은 신뢰성 확보에 큰 도움이 된다. cargo doc 명령어는 프로젝트에 포함된 각종 주석과 애너테이션으로부터 문서를 생성하여, Rust 문법에 맞춰 정리된 HTML 문서를 만들어낸다. 이 문서화 기능을 통해 프로젝트의 내부 구조와 함수 사용법 등을 체계적으로 관리할 수 있다.

rustc와 cargo 외에도 프로그래밍 편의를 높여주는 도구들이 있다. cargo fmt는 Rust 코드를 표준 스타일 가이드에 맞춰 자동 포매팅해주며, cargo clippy는 소스 코드의 잠재적 문제점이나 개선점을 알려준다. 이는 팀 내에서 일관된 코드 스타일을 유지하고, 더 나은 코드를 작성하는 데 도움이 된다.

프로그램을 최적화하려면 cargo build --release 명령어를 사용한다. release 모드는 최적화된 빌드를 생성하므로 실행 속도가 빨라지는 대신 빌드 시간이 조금 더 길어진다. 따라서 디버그 단계에서는 빠른 빌드를 위해 cargo build, 실제 배포나 성능 검증 시에는 cargo build --release를 사용하는 것이 일반적이다.

일반적으로 Rust를 설치하면 rustc, cargo가 함께 설치된다. 다만 rustup이라는 도구를 통해 Rust 컴파일러의 버전을 관리할 수도 있다. rustup update 명령어를 통해 최신 버전으로 갱신하거나, rustup override set 등을 통해 특정 프로젝트 디렉터리에만 다른 버전을 사용하도록 설정할 수 있다. 이렇게 버전 관리를 유연하게 함으로써 다양한 Rust 생태계 패키지나 라이브러리와의 호환성을 손쉽게 유지한다.

이러한 명령어들은 Rust 초심자에게는 다소 낯설게 느껴지지만, 점차 사용하다 보면 빌드 및 실행 프로세스를 자동화하고, 의존성 관리와 테스트, 문서화까지 일괄적으로 처리해주는 cargo의 장점을 체감하게 된다. 코드를 컴파일해야 할 때 rustc를 단독으로 호출할 수도 있지만, 프로젝트 규모가 커질수록 cargo가 요구 사항에 맞춰 빠르고 안전하게 작업을 도와주므로 Rust 개발 환경을 효율적으로 구성할 수 있다.
