C.W.K.
Stream
Lesson 03 of 06 · published

첫 Cargo 프로젝트

~10 min · foundations, cargo, hello-world

Level 0Rust 호기심러
0 XP0/80 lessons0/19 achievements
0/100 XP to next level100 XP to go0% complete

이론은 충분해. Rust 한테 뭔가 시켜보자. 생성-빌드-실행 루프 전체가 cargo 명령 세 개야.

cargo new

cargo new hello-rust 가 완전한 프로젝트를 깔아줘: Cargo.toml 매니페스트, 작동하는 hello-world 가 든 src/main.rs, 그리고 git 저장소까지. Rust 프로젝트를 손으로 조립하지 마 — cargo 가 해줘.

프로젝트의 모양

Cargo.toml 은 매니페스트야 (이름, 버전, edition, 의존성). src/main.rs 는 진입점이고 — 그 안의 fn main() 에서 실행이 시작돼. 소스는 src/ 밑에 살고; 빌드 결과물은 target/ 에 떨어져 (얜 gitignore 해).

main 과 println!

실행 파일마다 fn main() 이 딱 하나 있어. println! 은 한 줄을 출력해 — 그리고 그 ! 가 중요해: 함수가 아니라 매크로 라는 표시거든. 매크로는 함수가 못 하는 걸 해, 포맷 문자열을 컴파일 타임에 검사하는 것처럼. 잘못된 placeholder 를 쓰면 컴파일이 안 돼. (매크로는 나중에 트랙 하나 통째로 받아.)

cargo run = 빌드 + 실행 한 방. 개발 중엔 cargo run, 최적화 바이너리는 cargo build --release, 그냥 "컴파일 되나?" 만 알고 싶을 땐 풀 빌드 안 기다리고 cargo check.

네가 살게 될 루프

src/main.rs 편집하고, cargo run 돌리고, 출력 (또는 컴파일러 에러) 을 읽고, 반복. 그게 Rust 개발의 심장박동이야. 나머지 전부 — 테스트, 의존성, 문서 — 다 같은 cargo 현관문에 매달려 있어.

Code

첫 프로젝트 만들고 실행하기·bash
cargo new hello-rust
cd hello-rust

cargo run
#   Compiling hello-rust v0.1.0 (/path/to/hello-rust)
#    Finished dev [unoptimized + debuginfo] target(s)
#     Running `target/debug/hello-rust`
# Hello, world!
src/main.rs — 편집하고 다시 실행·rust
fn main() {
    let name = "Rustacean";
    // {name} 은 바로 보간돼; ! 는 println 이 매크로라는 뜻
    println!("Hello, {name}!");
    println!("2 + 2 = {}", 2 + 2);
}

External links

Exercise

프로젝트 하나 cargo new 하고, fn main 을 고쳐서 네 이름이랑 오늘 날짜를 두 줄로 출력해봐. 그다음 일부러 깨봐: println 에서 ! 를 빼고 돌려. 에러 읽어 — 컴파일러가 뭘 제안해?
Hint
! 없으면 컴파일러가 println 이라는 함수를 찾다가 못 찾아. 그래도 도와주려는 거 봐 — 멘토가 일찍부터 등장하는 거야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고
💛 by 똘이warm

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.