출시·고도화 중
Rust 안내서 · 1/6
이 장에서는 Rust를 설치하고 첫 프로젝트를 만들어 빌드하고 실행하는 과정까지 다룹니다. 프로젝트 폴더가 어떻게 생겼는지, 편집기는 어떻게 설정하면 좋은지도 함께 살펴봅니다.
Rust는 공식 설치 도구인 rustup으로 설치합니다. rustup은 컴파일러 rustc, 빌드 도구이자 패키지 관리자인 cargo, 표준 라이브러리, 코드 정리 도구 rustfmt, 린트 도구 clippy를 한꺼번에 설치하고, 이후 버전 업데이트까지 관리합니다.
macOS와 Linux에서는 터미널에서 다음 명령을 실행합니다.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shWindows에서는 rustup.rs에서 rustup-init.exe를 내려받아 실행합니다. Windows용 기본 툴체인은 MSVC 링커를 사용하므로 Visual Studio Build Tools의 C++ 빌드 도구가 필요하며, 설치 도중 안내가 나옵니다.
설치가 끝나면 새 터미널을 열고 버전을 확인합니다.
rustc --version
cargo --version
# 최신 안정판으로 업데이트
rustup update
# 기본 프로필에 이미 들어 있지만, 없다면 추가합니다
rustup component add rustfmt clippyRust에는 stable(안정판), beta, nightly 세 채널이 있습니다. 대부분의 작업은 stable로 충분하며, 실험 기능이 필요할 때만 rustup toolchain install nightly로 nightly를 추가합니다. 특정 프로젝트에서만 다른 툴체인을 쓰려면 프로젝트 루트에 rust-toolchain.toml 파일을 둡니다.
Rust 프로젝트는 거의 항상 Cargo로 만듭니다. cargo new는 폴더, 설정 파일, 첫 소스 파일을 만들고 Git 저장소까지 초기화합니다.
cargo new hello
cd hello
# 라이브러리 프로젝트는 --lib 를 붙입니다
cargo new my_utils --lib생성된 Cargo.toml은 프로젝트의 이름, 버전, 에디션, 의존성을 적는 설정 파일입니다. 에디션은 언어 문법의 묶음 단위로, 최근 Cargo는 가장 새로운 에디션을 기본으로 넣습니다.
[package]
name = "hello"
version = "0.1.0"
edition = "2024"
[dependencies]src/main.rs에는 실행 진입점인 main 함수가 들어 있습니다. println!처럼 이름 끝에 느낌표가 붙은 것은 함수가 아니라 매크로입니다.
fn main() {
println!("Hello, world!");
}자주 쓰는 Cargo 명령은 다음과 같습니다.
| 명령 | 하는 일 |
|---|---|
cargo build | 디버그 빌드, 결과는 target/debug/ |
cargo run | 빌드한 뒤 바로 실행 |
cargo check | 실행 파일 없이 컴파일 오류만 빠르게 검사 |
cargo build --release | 최적화 빌드, 결과는 target/release/ |
cargo test | 테스트 실행 |
cargo fmt | 코드 서식 정리 |
cargo clippy | 흔한 실수와 개선점을 알려 주는 린트 |
cargo doc --open | 프로젝트와 의존성 문서를 만들어 브라우저로 열기 |
개발 중에는 cargo check를 자주 돌리면 좋습니다. 코드 생성 단계를 건너뛰므로 cargo build보다 훨씬 빠릅니다. 성능을 잴 때는 반드시 --release로 빌드합니다. 디버그 빌드는 최적화를 하지 않아 수십 배 느릴 수 있습니다.
프로그램에 명령줄 인자를 넘길 때는 -- 뒤에 적습니다. 다음 프로그램을 src/main.rs에 넣고 cargo run -- 철수 영희로 실행해 보세요.
use std::env;
fn main() {
// 첫 번째 인자는 실행 파일 경로이므로 건너뜁니다
let names: Vec<String> = env::args().skip(1).collect();
if names.is_empty() {
println!("이름을 인자로 넘겨 주세요.");
return;
}
for name in &names {
println!("안녕하세요, {name}님!");
}
}Cargo는 정해진 폴더 규칙을 따르면 별도 설정 없이 파일을 찾아 빌드합니다.
Cargo.toml: 패키지 정보와 의존성Cargo.lock: 실제로 고정된 의존성 버전(자동 생성, 실행 프로그램은 저장소에 커밋)src/main.rs: 실행 프로그램의 진입점src/lib.rs: 라이브러리의 진입점(둘 다 있어도 됩니다)src/bin/*.rs: 실행 파일이 여러 개일 때 하나씩 추가tests/: 통합 테스트examples/: cargo run --example 이름으로 실행하는 예제target/: 빌드 결과물(저장소에 넣지 않습니다)Rust 편집 환경의 핵심은 언어 서버 rust-analyzer입니다. 자동 완성, 타입 힌트, 정의로 이동, 리팩터링을 제공합니다. VS Code에서는 rust-lang이 배포하는 rust-analyzer 확장을 설치하면 됩니다. JetBrains의 RustRover, Zed, Neovim(LSP 설정)도 많이 쓰입니다.
VS Code에서 저장할 때 서식을 정리하고, 검사 명령을 clippy로 바꾸려면 settings.json에 다음을 추가합니다.
{
"[rust]": {
"editor.formatOnSave": true
},
"rust-analyzer.check.command": "clippy"
}코드 서식 규칙을 바꾸고 싶다면 프로젝트 루트에 rustfmt.toml을 둡니다. 대부분의 팀은 기본값을 그대로 쓰므로 꼭 필요할 때만 바꾸는 것이 좋습니다.
max_width = 100rustc, cargo, rustfmt, clippy를 설치하고 업데이트합니다.cargo new로 프로젝트를 만들고 cargo run으로 실행합니다.cargo check, 배포와 성능 측정에는 cargo build --release를 씁니다.rustfmt와 clippy가 돌도록 설정해 두면 편합니다.
댓글 0개
로그인 · 로그인하면 댓글을 남길 수 있습니다.
첫 댓글을 남겨 보세요.