Crates (包)
crate_type
属性可以用来告诉编译器一个包是二进制文件还是库(甚至是哪种类型的库),而 crate_name
属性可以用来设置包的名称。
然而,需要注意的是,当使用 Rust 包管理器 Cargo 时,crate_type
和 crate_name
属性都**没有任何**作用。由于 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
属性时,我们不再需要向 rustc
传递 --crate-type
标志。
$ rustc lib.rs
$ ls lib*
library.rlib