← Rust 강의 목록으로
🦀
기초
기초 · 선수: 없음

01. Rust 시작하기 (rustup·cargo·hello world)

Rust 는 메모리 안전성을 컴파일 타임에 보장하는 시스템 프로그래밍 언어입니다. GC 없이 C/C++ 급 성능을 내면서도 데이터 경합·널 포인터·use-after-free 같은 메모리 버그를 컴파일러가 막아주는 것이 핵심 매력입니다. 이 강의에서는 rustup 으로 툴체인을 설치하고 cargo 로 첫 프로젝트를 만들어 실행해 봅니다.

Rustrustupcargo기초Hello World시작하기
소요 시간
약 1~1.5시간
난이도
📊 초급
선수 조건
🎯 없음
결과물
Rust 는 메모리 안전성을 컴파일 타임에 보장하는 시스템 프로그래밍 언어입니다. GC 없이 C/C++ 급 성능을 내면서도 데이터 경합·널 포인터·use-after-free 같은 메모리 버그를 컴파일러가 막아주는 것이 핵심 매력입니다. 이 강의에서는 rustup 으로 툴체인을 설치하고 cargo 로 첫 프로젝트를 만들어 실행해 봅니다.

이 강의에서 배우는 것

  • 1rustup 으로 안정판 Rust 툴체인을 설치한다
  • 2rustc·cargo 버전을 확인하고 차이를 이해한다
  • 3cargo new 로 첫 프로젝트를 만든다
  • 4cargo run / cargo build / cargo check 의 차이를 이해한다
  • 5Cargo.toml 의 기본 구조를 읽을 수 있다

소개

Rust 는 2010 년 Mozilla 에서 시작된 후 Firefox·AWS·Discord·Linux 커널까지 빠르게 확산된 시스템 언어입니다. 핵심 메시지는 단순합니다 — **컴파일러가 메모리 안전을 보장한다**. 가비지 컬렉터가 없는데도 dangling pointer·data race 같은 문제가 빌드 단계에서 막혀, 런타임에서 미스터리 크래시를 디버깅하는 시간이 극적으로 줄어듭니다.

이 강의는 22편 트랙의 1편입니다. 설치 → 첫 빌드 → 다음 강의(변수)까지 끊김 없이 이어집니다.

핵심 개념

1) rustup — Rust 의 공식 툴체인 매니저

Rust 는 Python 처럼 시스템에 직접 설치하지 않습니다. **rustup** 이 안정판/베타판/나이틀리를 함께 관리하며 필요 시 즉시 전환할 수 있게 해 줍니다.

  • **stable** — 6주마다 출시되는 안정판. 실무용
  • **beta** — 다음 안정판 후보
  • **nightly** — 매일 빌드. 실험적 기능 사용 시

2) cargo — 빌드·패키지·테스트 통합 도구

Node 의 npm, Python 의 pip 에 해당합니다. 다만 cargo 는 **빌드 시스템 + 의존성 관리 + 테스트 러너 + 문서 생성**을 한 명령으로 통합한다는 점이 특별합니다.

명령역할
cargo new새 프로젝트 생성
cargo build디버그 빌드 (target/debug/)
cargo build --release릴리스 빌드 (최적화 켬)
cargo run빌드 + 실행
cargo check타입 검사만, 바이너리 생성 안 함 (빠름)
cargo test테스트 실행

3) rustc 와의 관계

**rustc** 는 실제 컴파일러입니다. cargo 가 내부적으로 rustc 를 호출합니다. 단일 파일을 빠르게 컴파일할 때만 rustc 를 직접 쓰고, 평소엔 cargo 만 다룹니다.

핵심 예제

rustup 설치는 한 줄로 끝납니다. macOS/Linux:

bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Windows: https://rustup.rs 에서 rustup-init.exe 다운로드

설치 후 새 셸에서 버전을 확인합니다.

bash
rustc --version
# rustc 1.7x.x (yyyymmdd)

cargo --version
# cargo 1.7x.x (yyyymmdd)

첫 프로젝트 생성 → 실행:

bash
cargo new hello_rust
cd hello_rust
cargo run
#    Compiling hello_rust v0.1.0
#     Finished `dev` profile [unoptimized + debuginfo] target(s)
#      Running `target/debug/hello_rust`
# Hello, world!

생성된 `src/main.rs` 와 `Cargo.toml` 의 모습:

rust
// src/main.rs
fn main() {
    println!("Hello, world!");
}
toml
# Cargo.toml
[package]
name = "hello_rust"
version = "0.1.0"
edition = "2021"

[dependencies]

자주 하는 실수

Q. cargo: command not found 가 떠요

A. rustup 설치 후 셸을 **새로 열어야** PATH 가 갱신됩니다. 또는 `source $HOME/.cargo/env` 한 번 실행하면 같은 셸에서도 인식됩니다.

Q. cargo build 만 하면 실행 파일이 어디 있나요?

A. `target/debug/<프로젝트명>` (Windows 는 `.exe` 확장자). 릴리스 빌드는 `target/release/` 입니다. 그래서 빠르게 확인할 땐 그냥 `cargo run` 이 편합니다.

Q. println! 의 ! 는 뭔가요? 함수 호출 아닌가요?

A. ! 가 붙으면 **매크로** 입니다. 컴파일 타임에 코드를 생성하는 메타 기능으로, 가변 인자나 컴파일 타임 포매팅 검증을 위해 함수 대신 매크로로 만들어져 있습니다. Rust 의 `format!`, `vec!`, `assert_eq!` 등도 모두 매크로.

정리

  • rustup 이 Rust 툴체인을 관리한다
  • cargo 가 빌드·실행·테스트·문서 생성을 통합한다
  • 첫 프로젝트는 `cargo new` 한 줄, 실행은 `cargo run`
  • 빠른 검사용은 `cargo check`, 배포용은 `cargo build --release`
  • println! 은 함수가 아니라 매크로

과제

  1. `cargo new` 로 `coding_now_rust_01` 프로젝트를 만들고 `cargo run` 으로 실행
  2. main.rs 의 메시지를 본인 이름이 들어간 문장으로 바꿔 다시 실행
  3. `cargo build --release` 를 실행하고 `target/release/` 의 바이너리 크기를 디버그 빌드와 비교
예제 코드 / 강의 자료

전체 강의 자료와 예제 코드는 GitHub에서 자유롭게 받아볼 수 있습니다.

GitHub에서 보기 ↗