Rust Packages and Crates

고승우·2023년 7월 6일
0
post-thumbnail

Packages fand Crates

crate은 Rust 컴파일러가 한 번에 처리하는 가장 작은 단위의 코드이다. cargo 대신 rustc를 작동시켜도 컴파일러가 파일을 crate로 인식한다.

Type of Crate

crate 에는 Binary Crates, Library Crates 두 가지 타입이 존재한다. Binary Crates는 command-line 프로그램이나 서버와 같이 직접 실행할 수 있는 프로그램이다. Library cratesmain함수가 존재하지 않고, 실행할 수 있게 컴파일 되지 않는다.

Package

Package는 기능들을 제공하는 crate 묶음이다. pacakage는 이러한 crate들을 build하는 방법을 포함한 Cargo.toml을 갖고 있다. crate root는 Rust 컴파일러가 내 crate의 root module을 만들고, 시작하는 소스 파일이다. Cargo는 코드를 작성하지 위해 사용한 command-line tool을 위한 binary crate를 포함하고 있다. Cargo command-line tool이 사용하는 같은 로직을 사용하기 위해서 Cargo librry에 depend 할 수 있다.

New project with cargo

cargo new를 사용하여 Cargo를 활용해 프로젝트를 새로 생성할 수 있다.

$ cargo new my-project
     Created binary (application) `my-project` package
$ ls my-project
Cargo.toml
src
$ ls my-project/src
main.rs

Cargo는 src/main.rs가 패키지와 이름이 같은 binary root crate가 된다는 협약을 따른다. 이와 같이 Cargo 는 package directory가 scr/lib.rs 를 포함하고 있다면, package와 같은 이름의 library crate를 포합하고 있다고 인식한다. Cargo 는 library나 binary를 빌드하기 위해서 root file에서 rustc를 지난다

만약, src/main.rs와 scr/lib.rs를 모두 포함하고 있다면, package는 src/bin directory에 파일을 배치하여 여러 binary crate를 가질 수 있다: 각 파일은 독립적인 binary cfrate가 된다.

profile
٩( ᐛ )و 

0개의 댓글