Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

크레이트

crate_type 속성은 크레이트가 바이너리인지 라이브러리인지(심지어 어떤 종류의 라이브러리인지) 컴파일러에게 알려주는 데 사용될 수 있으며, crate_name 속성은 크레이트의 이름을 설정하는 데 사용될 수 있습니다.

하지만 Rust 패키지 관리자인 Cargo를 사용할 때는 crate_typecrate_name 속성 모두 아무런 효과가 없다는 점에 유의해야 합니다. 대다수의 Rust 프로젝트가 Cargo를 사용하므로, crate_typecrate_name의 실제 사용은 상대적으로 제한적입니다.

// 이 크레이트는 라이브러리입니다
#![crate_type = "lib"]
// 라이브러리 이름은 "rary"입니다
#![crate_name = "rary"]

pub fn public_function() {
    println!(rary의 `public_function()` 호출됨);
}

fn private_function() {
    println!(rary의 `private_function()` 호출됨);
}

pub fn indirect_access() {
    print!(rary의 `indirect_access()` 호출됨, 결과는\n> ");

    private_function();
}

crate_type 속성이 사용되면, 더 이상 rustc--crate-type 플래그를 전달할 필요가 없습니다.

$ rustc lib.rs
$ ls lib*
library.rlib