Rust 설치 + Hello World + Hello Cargo

Why Rust?

  • 기존의 C/C++ 언어가 지니는 메모리 관리의 어려움을 언어 차원에서 해소
    • Windows OS에서 발견된 버그의 70%가 메모리 관련 버그임
  • 최신 멀티 코어 프로세스를 활용한 동시성에 대한 지원
  • 비용 없는 추상화

 


Rust 설치 & 설정

1
2
3
4
$ curl https://sh.rustup.rs -sSf | sh
$ source $HOME/.cargo/env # or add the following to ~/.bashrc `export PATH="$HOME/.cargo/bin:$PATH"

$ rustc --version # to check Rust version

 


Hello World

1
2
3
fn main(){
println!("Hello, world!");
}
  • Rust에서 들여쓰기는 탭이 아니라 공백문자 4개를 이용한다.
  • println!은 Rust macro이다. 함수가 아니라 매크로를 호출하는것이다.
  • 각 구문은 ;로 끝난다.

 

1
2
3
$ rustc main.rs
$ ./main
Hello, world!
  • 처음에 위 코드를 돌렸을 때 error: linker 'cc' not found 라는 에러가 나타났다.
    • sudo apt-get install gcc clang을 함으로써 해결되었다. 내 경우는 cc가 clang과 연결되어있어서 clang을 설치해줬더니 해결되었다. 대부분의 경우 gcc와 연결이 되어있을테니 gcc를 설치하면 해결될 것이다.
  • Rust는 ahead-of-time compilation을 하기 때문에, 생성된 바이너리는 Rust를 설치하지 않고도 사용할 수 있다.
    • 이러한 점은 Python, javascript, ruby와는 다른 점이다.

 


Hello Cargo

1
2
$ cargo new hello_cargo_project
$ cd hello_cargo_project
  • cargo라는 Rust 언어 전용 패키지 매니저를 사용해서 프로젝트를 생성한다.
  • 위와 같은 커맨드로 프로젝트를 생성하면 다음과 같은 내용들이 있다.
    • src 폴더 (내부에는 main.rs 파일이 있음)
    • Cargo.toml 파일
      • 프로젝트 config 파일
      • 패키지 이름, 버전, 작성자, 디펜던시 정보 등이 적혀있음.
      • Rust에서 패키지는 crate라고 부름.
    • .gitignore 및 .git 폴더
1
2
3
4
5
$ cargo build # Build only (Debug by default)
$ cargo build --release # Build Release mode
$ ./target/debug/hello_cargo_project
$ cargo run # Build + Run
$ cargo check # Only check if code can be compiled without error (i.e. Does not produce binary program)
  • 위와 같은 커맨드를 이용해서 빌드 / 빌드 + 실행 / 컴파일 검사를 할 수 있다.
  • --release 옵션을 이용해서 코드 실행에 최적화된 release 모드 빌드를 할 수 있다.