Rust 공식 문서를 참고한 글입니다.
1. Rust 설치
먼저, Rust를 설치하기 위해서 rustup
이라는 CLI tool을 사용할 것이다. MacOS/Linux 에서는 shell에서 설치가 가능하기에, 명령어를 통해 설치할 것이다.
$ curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
중간에 option을 선택해야 하는데, 1
이나 enter
를 입력하면 알아서 설치를 시작한다.
Rust is installed now. Great! 라는 문구가 뜨면 설치가 완료된 상태이다.
이렇게 출력되면, rustup이 등록한 환경변수가 시스템이 바로 등록되지 않기 때문에 터미널을 종료하고 다시 시작하거나 직접 등록할 수 있다.
~$ source $HOME/.cargo/env
혹시나 일부 Rust Package 들이 C언어 의존성 때문에 오류가 발생할 수 있는데, 이 경우 C Complier를 사용하면 된다.
# MacOS
xcode-select --install
2. Hello World! 출력
이제 Rust 를 사용할 수 있는 환경이 구축되었으니, 출력을 해볼 것이다. vscode에서 rust-analyzer
를 설치하면 편리하게 사용할 수 있다. main.rs
라는 파일을 생성하고 아래와 같은 코드를 작성한다.
fn main() {
println!("Hello, world!");
}
작성 후에 터미널에 명령어를 작성하면 Hello, world!가 출력되는 것을 볼 수 있다.
$ rustc main.rs
$ ./main
fn main() {
}
코드를 쪼개어 보자. main이라는 이름을 가진 함수를 정의한다. 여느 언어와 마찬가지로, 앞으로 Rust를 사용할 때 자주 사용하게 될 것이다. 그리고 {} 안에는 함수의 body인 println!("Hello, world!");
이 선언되어 있다. 여기에서 println!
앞에는 TAB이 아니라, 띄어쓰기 4칸이 있다는 것을 기억해야 한다. 그리고, println 뒤에 있는 !는 챕터 19장에서 언급할 예정이지만, 매크로인 데 일단 함수랑 비슷한 거라고 생각하면 된다.
우리는 지금까지 Rust 프로그램을 작성하고 rustc
라는 컴파일러로 컴파일해 실행하였다. 그러나 실제 Rust 프로그램은 이런 방식으로 작성하지 않는다. Rust의 빌드 시스템이자 패키지 관리자인 Cargo를 사용한다.
3. Cargo 사용하기
Cargo는 앞서 우리가 초기 환경 설정을 하면서 이미 설치가 되어있다.
아래 명령어를 통해 cargo 설치 여부를 확인할 수 있다.
cargo --version
설치가 확인되었으면 아래 명령어를 통해 cargo 프로젝트를 생성해보자.
$ cargo new hello_cargo
$ cd hello_cargo
이 명령어는 cargo new [생성할 프로젝트 이름]이기 때문에, hello\_cargo
라는 디렉토리와 디렉토리 내에 파일들이 생성된다.
먼저, Cargo.toml을 살펴보자. Cargo.toml
은 설정 파일로, [package]에는 프로젝트 이름, 버전 등의 정보가 있다. [dependencies]에는 의존성이 있는 라이브러리를 관리하는데 사용된다.
[package]
name = "hello_cargo"
version = "0.1.0"
edition = "2021"
[dependencies]
소스 코드는 src라는 파일 안에 있는데, 프로젝트를 생성하면 src 폴더 안에 main.rs
라는 파일이 추가된다.
기본적으로 우리가 앞서 작성했던 Hello World 코드가 있다.
// main.rs
fn main() {
println!("Hello, world!");
}
지금까지는 rustc를 사용해 컴파일했는데, Cargo를 사용할 때는 명령어가 다르다. $ cargo build
명령어를 사용해서 컴파일하고 실행 파일은 target
이라는 폴더 안에 생성된다. $ ./target/debug/hello_cargo
를 입력하면 실행할 수 있다. carge build 명령어를 처음 실행하면, Cargo.lock
이라는 파일이 생성된다. 이는 의존성을 가진 라이브러리의 정확한 버전을 추적하기 위한 파일이다.
만약 컴파일 후 실행도 같이 하고 싶다면 $ cargo run
을 사용하면 된다. 그래서 파일 내용을 수정하고 이 명령어를 사용하면 새롭게 컴파일해서 실행 결과를 출력한다.
Cargo에서 실행 파일을 생성하지 않고 컴파일 가능 여부만 빠르게 확인하는 명령어도 존재한다. cargo check
을 사용하면 cargo build
보다 속도가 빨라서 작업 중 오류 여부를 신속하게 확인할 수 있다.
cargo run
이나 cargo build
를 사용해서 실행 파일이 만들어지면, target이라는 폴더가 생성된다. 이는 실행 파일이 debug 모드로 생성되었다는 것을 의미하는데, 이는 배포 버전보다 최적화가 덜된 채로 생성된다. cargo build --release
라는 명령어를 사용하면 최적화가 된 상태의 배포 버전 실행 파일이 생성된다. debug 모드보다 최적화된 상태이기 때문에 컴파일 시간이 오래 걸린다. 참고로, rustc 대신에 cargo를 사용하는 이유는 지금까지는 큰 차이가 없다. 그러나 코드가 복잡하고 프로그램이 무거워지는 경우에 차이가 확연하다.
'언어 > Rust' 카테고리의 다른 글
[Rust] 4-1. 소유권(Ownership) (0) | 2024.09.28 |
---|---|
[Rust] 3-3. 제어문(Control Flow) (0) | 2024.09.26 |
[Rust] 3-2. 함수와 주석 (0) | 2024.09.25 |
[Rust] 3-1. 변수와 자료형 (1) | 2024.09.25 |
[Rust] 2. 숫자 맞히기 게임 구현(feat.사용자 입출력과 에러 핸들링) (1) | 2024.09.25 |