Rust 프로젝트는 터미널에서 cargo
명령어를 통해서 생성 할 수 있다. 프로젝트 hello
를 생성한다고 가정할 때 임의의 디렉터리에서 cargo new hello --bin
을 실행하면 hello
디렉터리가 만들어지고 이 안에 기본 뼈대가 생성된다. 또는 직접 hello
디렉터리를 만들고 이 안에서 cargo init
명령어를 실행해도 똑같은 결과를 볼 수 있다.
hello\
src\
main.rs
Cargo.toml
main()
함수가 존재하는 기본 메인 파일[dependencies]
hello
디렉터리 안에서 cargo check
, cargo build
, cargo run
을 실행하면 결과를 볼 수 있는데 check은 문법 확인, build는 결과 생성, run은 결과를 실행한다. 바로 실행하고 싶다면 cargo run
을 실행한다.
위의 이미지는 Rust로 개발한 Unix 스타일의 Redox1 운영체제이다. 현재 개발 단계이며 글 쓴 시점에서 버전은 0.6.0이다. 첫 포스팅에 Redox 이미지를 사용한 이유는 Rust 언어의 성격을 잘 표현해주기 때문이다. 참고로 위의 이미지는 개인 노트북의 VirtualBox에서 실행한 모습이다.
Rust 프로그램에서 HTTP, Rest API(webapi)를 사용하기 위해 reqwest 패키지를 활용한 기본적인 아래의 예제는 blocking 방식과 async로 확장한 방법을 보여준다.
예제에 필요한 기본적인 패키지는 reqwest 외에 tokio, serde를 사용한다. 예제에 사용한 베이스 코드는 Proful Sadangi(Youtube)1를 참고2하였다.
#Cargo.toml
[dependencies]
reqwest = { version = "0.11", features = ["blocking","json"] }
tokio = { version = "1.15.0", features = ["full"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0.74"
#rustfmt.toml
max_width = 200
fn_args_layout = "Compressed"
use_small_heuristics = "Max"
#.cargo/config : static compile option
[target.x86_64-pc-windows-msvc]
rustflags = ["-C", "target-feature=+crt-static"]