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

Крейт (Crates)

Атрибут crate_type можна використати, щоб сказати компілятору, чи крейт є бінарним або бібліотекою (і навіть який саме тип бібліотеки), а атрибут crate_name можна використати, щоб задати назву крейту.

Однак важливо зазначити, що і атрибут crate_type, і атрибут crate_name не мають жодного впливу під час використання Cargo, менеджера пакетів Rust. Оскільки Cargo використовується для більшості проєктів Rust, це означає, що реальні випадки використання crate_type і crate_name є відносно обмеженими.

// This crate is a library
#![crate_type = "lib"]
// The library is named "rary"
#![crate_name = "rary"]

pub fn public_function() {
    println!("called rary's `public_function()`");
}

fn private_function() {
    println!("called rary's `private_function()`");
}

pub fn indirect_access() {
    print!("called rary's `indirect_access()`, that\n> ");

    private_function();
}

Коли використовується атрибут crate_type, нам більше не потрібно передавати прапорець --crate-type до rustc.

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