크레이트 (Crate)

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 라고 부른다.

This site is not affiliated with or endorsed by the Rust Foundation or Rust Project.