Crate
Crate
Crate는 원래 화물칸에 실는 큰 상자를 의미하는데, Rust에서는 실행 가능한 바이너리(binary crate) 혹은 외부에서 불려 사용되는 라이브러리(library crate)를 의미한다.
Cargo를 사용하여 프로젝트를 생성(cargo new)할 때, --bin 옵션을 주면 실행파일을 만들어 주고, --lib 옵션을 주면 라이브러리 파일을 만들어 준다. 즉, 아래와 같이 cargo new 명령에서 --bin 옵션(디폴트 옵션)을 주면 Binary Crate를 생성하고, --lib 옵션을 주면 Library Crate를 생성한다.
// Binary $ cargo new testproject --bin // Library $ cargo new testproject --lib
소스 코드의 측면에서 보면, "cargo new" 에서 --bin 옵션을 주면 기본적으로 src/main.rs 파일을 만들어 주고, --lib 옵션을 주면 src/lib.rs 파일을 만들어 준다. src/main.rs 파일에는 기본적으로 main() 함수가 들어가며 이곳이 프로그램 실행에 있어서의 엔트리포인트가 된다. src/lib.rs 파일은 라이브러리를 위한 것으로 main() 함수가 존재하지 않는다.
Cargo 프로젝트에서 src/main.rs 파일(Binary Crate)이나 src/lib.rs 파일(Library Crate)은 Cargo에서 프로젝트를 빌드할 때, Cargo가 가장 먼저 찾게되는 파일인데 이를 Crate Root 라고 부른다.