2. 개발 환경 준비와 첫 번째 프로그램

Rust를 배우기 전에 먼저 손을 풀자
Rust를 막 배우기 시작하면 문법보다 먼저 부딪히는 벽이 있습니다. 바로 "무엇을 설치해야 하지?", "cargo랑 rustup은 뭐가 다르지?", "왜 명령어가 안 되지?" 같은 아주 현실적인 벽입니다. 이 벽을 넘지 못하면 뒤의 변수, 함수, 소유권을 배우기도 전에 체력이 먼저 빠집니다.
그래서 Rust 입문에서는 개발 환경을 제대로 잡는 일이 생각보다 중요합니다. 환경 설정은 화려하지 않지만, 한 번만 잘 해두면 이후 학습이 훨씬 매끄러워집니다. 마치 운동화 끈을 제대로 묶고 달리기 시작하는 것과 비슷합니다. 끈이 풀리면 멋지게 달리기도 전에 넘어지니까요.
Rust의 공식 권장 설치 방법은 rustup을 사용하는 것입니다. 이 방법으로 설치하면 컴파일러 rustc와 빌드 도구 cargo를 함께 사용할 수 있습니다.12
rustup, cargo, rustc를 한 번에 이해하기
처음 보는 이름이 세 개나 나오면 살짝 긴장됩니다. 하지만 역할은 의외로 분명합니다.
rustup은 Rust 도구 모음을 설치하고 버전을 관리하는 도구입니다.rustc는 Rust 코드를 기계가 실행할 수 있는 형태로 바꾸는 컴파일러입니다.cargo는 프로젝트 생성, 빌드, 실행, 테스트, 의존성 관리까지 맡는 실전 작업 도구입니다.26
비유하자면 rustup은 공구함 관리자이고, rustc는 실제로 나사를 조이는 전동 드라이버, cargo는 작업 순서를 챙겨주는 현장 반장에 가깝습니다. 초보자는 대부분 cargo를 가장 자주 쓰게 됩니다. 실제 Rust 프로젝트의 거의 대부분이 Cargo를 기준으로 움직이기 때문입니다.5
Rust 설치하기
가장 추천되는 선택은 stable 채널입니다. 초보자에게는 가장 안정적이고, 학습 자료와도 잘 맞습니다.
macOS, Linux, WSL
터미널에서 아래 명령을 실행합니다.1
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh설치가 끝난 뒤 현재 셸에서 명령어가 바로 안 잡히면 새 터미널을 열거나, 필요할 경우 아래 명령으로 환경을 다시 불러옵니다.
source $HOME/.cargo/envWindows
Windows에서는 공식 설치 프로그램 rustup-init.exe를 내려받아 실행하면 됩니다. 설치 과정에서 Visual Studio C++ Build Tools가 필요하다는 안내가 나오면 함께 설치해야 할 수 있습니다.1
설치 확인
설치가 끝났다면 새 터미널을 열고 아래 명령으로 확인합니다.3
rustc --version
cargo --version
rustup show버전 정보가 보이면 준비 완료입니다. rustup이 설치한 실행 파일들은 보통 Unix 계열에서는 $HOME/.cargo/bin, Windows에서는 %USERPROFILE%.cargobin 아래에 놓이고, 일반적으로 PATH에도 자동으로 연결됩니다.3
만약 command not found 같은 메시지가 보이면 당황하지 말고 먼저 터미널을 완전히 껐다가 다시 열어보세요. 그것만으로 해결되는 경우가 꽤 많습니다. Rust도 새 주인을 만난 뒤 잠깐 몸을 푸는 시간이 필요한 셈입니다.
업데이트와 버전 관리
Rust는 비교적 자주 업데이트됩니다. 오래된 설치 상태로 공부하면 예제는 맞는데 내 컴퓨터만 말을 안 듣는 일이 생길 수 있습니다. 이럴 때는 아래 명령으로 최신 stable 버전으로 업데이트하면 됩니다.13
rustup update나중에 beta나 nightly 같은 다른 채널을 시험해볼 수도 있지만, 지금은 stable 하나면 충분합니다. 초보 단계에서는 "새 기능을 가장 먼저 써보기"보다 "예제가 잘 돌아가기"가 훨씬 중요합니다.
참고로 정말 정리하고 싶다면 rustup self uninstall로 Rust 환경을 제거할 수도 있습니다.3
편집기 환경 준비하기
Rust 코드는 메모장으로도 쓸 수 있습니다. 하지만 굳이 맨손으로 눈밭을 헤쳐 갈 필요는 없습니다. 초보자에게는 VS Code + rust-analyzer 조합이 가장 무난합니다. 자동 완성, 실시간 오류 표시, 정의로 이동 같은 기능이 바로 도움을 줍니다. Cargo.toml을 보기 좋게 만들어주는 TOML 확장과 디버깅용 확장도 함께 쓰면 편합니다.4
추천 조합은 다음과 같습니다.
VS Code
rust-analyzer확장필요하면
Even Better TOML,CodeLLDB같은 보조 확장4
JetBrains 계열 도구를 좋아한다면 RustRover나 IntelliJ 기반 환경도 좋은 선택입니다.4
중요한 점은 편집기의 종류보다 실시간으로 오류를 빨리 보여주고, Cargo 프로젝트를 잘 이해하는가입니다. Rust는 컴파일러 메시지가 아주 친절한 편이라서, 편집기가 그 메시지를 잘 보여주면 학습 속도가 눈에 띄게 빨라집니다.
첫 번째 프로젝트 만들기
이제 진짜로 손을 움직여봅시다. 터미널에서 원하는 작업 폴더로 이동한 뒤 아래 명령을 실행합니다.5
cargo new hello_rust
cd hello_rust
cargo runcargo new hello_rust는 hello_rust라는 새 프로젝트를 만들고, 기본 코드까지 자동으로 준비합니다. 그리고 cargo run은 코드를 빌드한 뒤 바로 실행합니다.5
성공하면 대략 이런 흐름의 출력이 보입니다.
Compiling hello_rust v0.1.0 (...)
Finished dev [unoptimized + debuginfo] target(s) in ...
Running `target/debug/hello_rust`
Hello, world!처음 실행인데 벌써 "Hello, world!"를 만났습니다. 프로그래밍 세계의 국룰 인사입니다. Rust도 예외는 아닙니다.
Cargo가 만들어준 파일 읽어보기
프로젝트 폴더를 열어보면 보통 이런 구조를 보게 됩니다.5
hello_rust/
├── Cargo.toml
├── src/
│ └── main.rs
└── .gitignore조금 더 작업이 진행되면 Cargo.lock과 target/도 생깁니다.5
Cargo.toml
Cargo.toml은 프로젝트의 설정 파일입니다. 프로젝트 이름, 버전, Rust 에디션, 의존성 정보가 들어갑니다.5
예를 들면 이런 형태입니다.
[package]
name = "hello_rust"
version = "0.1.0"
edition = "2024"
[dependencies]여기서 edition 값은 설치한 Rust 버전에 따라 보이는 값이 달라질 수 있습니다. 중요한 건 "이 프로젝트가 어떤 Rust 문법 시대를 기준으로 작성되는가" 정도로 이해하면 충분합니다.
src/main.rs
src/main.rs는 실행 프로그램의 시작점입니다. 기본 코드는 이렇게 생겼습니다.5
fn main() {
println!("Hello, world!");
}이 코드를 아주 가볍게 읽어보면 이렇습니다.
fn은 함수를 정의할 때 쓰는 키워드입니다.main은 프로그램이 시작될 때 가장 먼저 실행되는 특별한 함수입니다.println!은 화면에 글을 출력하는 매크로입니다. 끝의!는 함수가 아니라 매크로라는 표시입니다.
아직 문법이 낯설어도 괜찮습니다. 지금 중요한 것은 "Rust 프로그램은 보통 Cargo 프로젝트 안에서, src/main.rs부터 시작한다"는 감각입니다.
코드를 조금 바꿔서 다시 실행해보기
이제 src/main.rs를 아래처럼 바꿔보세요.
fn main() {
println!("Hello, Rust!");
}그리고 다시 실행합니다.
cargo run이번에는 Cargo가 파일이 바뀌었다는 걸 알아차리고 다시 빌드한 뒤 실행합니다.5 이 경험이 중요합니다. Rust 개발은 기본적으로 다음 순환을 반복합니다.
코드를 고친다.
저장한다.
cargo run또는cargo check를 실행한다.에러를 읽고 다시 고친다.
이 단순한 순환이 Rust 실력의 뼈대를 만듭니다.
자주 쓰는 Cargo 명령어
Rust를 배운다는 건 어느 정도 Cargo와 친해진다는 뜻이기도 합니다. 초보자 단계에서는 아래 네 개를 가장 먼저 익히면 충분합니다.5
cargo new 프로젝트명: 새 프로젝트 생성cargo run: 빌드 후 실행cargo build: 실행 파일 생성cargo check: 실행 파일은 만들지 않고 컴파일 가능 여부만 빠르게 확인
특히 cargo check는 초보자에게 아주 좋은 친구입니다. 코드를 쓰다가 "이거 문법 맞나?" 싶을 때 빠르게 확인할 수 있기 때문입니다. 실행 파일을 만들지 않아서 cargo build보다 빠른 경우가 많습니다.5
build와 run, check의 차이 감 잡기
처음엔 셋이 비슷해 보여도, 손에 익히면 역할이 또렷해집니다.
cargo build는 결과물을 실제로 빌드합니다. 그래서 실행 파일이 target/debug/ 아래에 생깁니다.5 반면 cargo run은 빌드와 실행을 한 번에 합니다. 가장 자주 쓰게 될 명령입니다. 그리고 cargo check는 실행 파일 없이 코드 점검만 합니다. 말하자면 "실전 경기", "연습 경기", "몸풀기" 정도의 차이라고 생각하면 쉽습니다.
또 하나 기억할 것이 있습니다. Rust는 기본적으로 개발 중에는 debug 빌드를 사용합니다. 그래서 처음에는 속도보다 개발 편의성이 우선입니다. 나중에 배포용으로 최적화된 실행 파일이 필요할 때는 아래처럼 빌드합니다.5
cargo build --release이 명령으로 만든 결과물은 target/release/에 들어갑니다. 더 빠르게 실행되지만, 빌드 시간은 더 걸립니다.5
rustc를 직접 쓰는 방법도 있긴 하다
Rust에는 rustc라는 컴파일러가 있으므로 아주 작은 파일 하나를 직접 컴파일할 수도 있습니다.6
예를 들어 main.rs 파일 하나만 있을 때는 이런 식입니다.
rustc main.rs하지만 초보자는 곧바로 Cargo에 익숙해지는 편이 훨씬 좋습니다. 실제 프로젝트는 여러 파일, 설정, 의존성, 테스트를 함께 다루게 되기 때문입니다. rustc를 아예 몰라도 괜찮지만, "컴파일 자체를 담당하는 핵심 도구"라는 사실만 알아두면 충분합니다.6
초보자가 자주 막히는 지점
환경 설정 직후에는 비슷한 문제를 자주 만납니다. 대부분은 이상한 버그가 아니라 흔한 통과의례입니다.
cargo명령이 안 잡히면 터미널을 다시 열고 PATH 설정을 먼저 확인합니다.3Windows에서 빌드 도구 관련 오류가 나오면 Visual Studio C++ Build Tools 설치 여부를 확인합니다.1
could not find Cargo.toml오류가 나오면 현재 위치가 프로젝트 폴더인지 확인합니다. 보통Cargo.toml이 있는 폴더에서 명령을 실행해야 합니다.첫 빌드가 느린 것은 정상입니다. 필요한 구성 요소를 준비하느라 시간이 조금 걸릴 수 있습니다.
이 단계에서 가장 중요한 태도는 "내가 못해서 안 되는 건가?"라고 너무 빨리 결론 내리지 않는 것입니다. 대부분은 설치 경로, 터미널 재시작, 현재 폴더 위치 같은 아주 소박한 이유입니다.
이제 손에 넣은 기본 개발 흐름
여기까지 했다면 이미 Rust 개발의 핵심 흐름을 한 바퀴 돈 셈입니다.
rustup으로 Rust 도구 설치cargo로 프로젝트 생성편집기에서
main.rs수정cargo run으로 실행cargo check로 빠르게 점검필요하면
cargo build --release로 배포용 빌드
이 흐름이 몸에 붙으면 이후 챕터에서 문법을 배우다가도 길을 잃지 않습니다. 문법은 조금 헷갈려도, 코드를 어디에 쓰고 어떻게 실행하는지는 이미 알고 있기 때문입니다. 초보자에게 이 안정감은 생각보다 큽니다.
마무리
Rust를 시작할 준비는 끝났습니다. 이제 여러분은 단순히 언어를 "읽는 사람"이 아니라, 직접 프로젝트를 만들고 실행할 수 있는 상태가 되었습니다. Hello, world!는 짧은 한 줄이지만, 사실상 Rust 세계에 입장했다는 첫 도장과 같습니다.
다음 장에서는 본격적으로 변수, 타입, 함수, 제어 흐름을 배우며 Rust 문법의 기초 체력을 쌓아보겠습니다. 이제 도구는 준비됐습니다. 슬슬 진짜 코딩을 시작할 시간입니다.
참고
1Getting started - Rust Programming Language
2Installation - The Cargo Book
3Installation - The rustup book
4Getting Started with Rust: A Comprehensive Installation and Setup Guide
이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.