All Articles

Rust Programming 시작하기

Rust 설치

curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh

Rust update

rustup update

Hello World

Rust를 설치 했으므로, 첫 번째 Rust 프로그램을 작성해보자

프로젝트 디렉토리 생성

mkdir ~/projects
cd ~/projects
mkdir hello_world
cd hello_world

Rust 프로그램 작성 및 실행

main.rs라는 새로운 파일을 만들고, 다음과 같은 내용을 작성한다.

# main.rs
fn main() {
    println!("Hello, world!");
}

이제 작성한 파일을 rustc를 이용해 컴파일하고, 컴파일된 main 이라는 실행 파일을 실행한다.

$ rustc main.rs
$ ./main
Hello, world!

Cargo

Cargo는 Rust의 빌드 시스템이자 패키지 관리자 입니다.

Cargo는 코드 빌드, 코드 의존성 라이브러리의 다운로드, 빌드와 같은 작업을 처리합니다.

Cargo를 이용한 프로젝트 생성

cargo new hello_cargo
cd hello_cargo

Cargo를 이용해 프로젝트를 생성하면 다음과 같은 파일을 생성합니다.

.
├── .git/
├── .gitignore
├── Cargo.toml
└── src
    └── main.rs

먼저 Cargo.toml의 내용을 살펴 봅니다.

[package]
name = "hello_cargo"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]

[package]는 패키지를 구성하는 기본 섹션을 의미하며, Carto가 프로그램을 컴파일 하는데 필요한 구성 정보를 나타냅니다.

[dependencies]는 프로젝트의 종속성 섹션을 의미하며, 코드 패키지(Rust에서는 crates라고 지칭) 정보를 나열합니다.

src/main.rs의 내용을 살펴보면

fn main() {
    println!("Hello, world!");
}

앞서 설명한 코드와 동일한 코드가 포함되어 있습니다.

이를 통해 Cargo를 통해 관리되는 코드는 /src 디렉토리안에 위치하며, 코드에 대한 종속성 관리는 Cargo.toml을 통해 한다는 것을 알게 되었습니다.

이제 Cargo를 통해 프로젝트를 컴파일하고, 실행해볼 차례입니다.

$ cargo build
   Compiling hello_cargo v0.1.0 (/rust/study/hello_cargo)
    Finished dev [unoptimized + debuginfo] target(s) in 0.64s

이제 빌드된 실행 파일을 실행해보면

./target/debug/hello_cargo
Hello, world!

실행 후 프로젝트를 확인해 보면 Cargo.lock 파일이 추가되었습니다.

이 파일은 프로젝트의 정확한 버전의 종속성을 추척하며, Cargo에 의해 관리됩니다.

컴파일 후 실행 파일을 실핼할 수 도 있지만, 컴파일과 실행을 하나의 명령으로 진행할 수도 있습니다.

cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.00s
     Running `target/debug/hello_cargo`
Hello, world!

컴파일 명령어가 보이지 않는 것은, 처음 만들었던 main.rs 파일이 변경되지 않아서 입니다.

마지막으로 코드를 빠르게 검사하고 컴파일 하지만, 실행 파일은 생성하지 않는 cargo check 라는 명령어도 있습니다.

cargo check
    Checking hello_cargo v0.1.0 (/rust/study/hello_cargo)
    Finished dev [unoptimized + debuginfo] target(s) in 0.10s

cargo check는 실행 파일을 생성하는 건너 뜁어 build보다 훨씬 빠르게 코드를 확인할 수 있습니다.

코드를 작성하고 작업을 확인할 경우 훨씬 빠르게 코드를 검사할 수 있습니다.

출시를 위한 빌드

프로젝트를 릴리즈 할때가 되면, cargo build --release를 사용하여 최적화된 컴파일을 진행할 수 있습니다.

이 명령어를 실행할 경우 ./target/debug가 아닌 ./target/release에 실행 파일이 생성됩니다.

Published Nov 21, 2021

Right Thoughts, Right Words, Right Action