属性
属性是应用于某个模块、某个 crate 或项的元数据。
当属性应用于整个 crate 时,其语法为 #![crate_attribute]
,而当属性应用于模块或项时,其语法为 #[item_attribute]
(注意没有感叹号 !
)。
属性可以带有不同语法格式的参数:
#[attribute = "value"]
#[attribute(key = "value")]
#[attribute(value)]
dead_code
dead_code
属性可用于禁止编译器 lint
警告未使用的函数。用于调试代码很方便。
fn used_function() {}
#[allow(dead_code)]
fn unused_function() {}
fn main() {
used_function();
}
cfg
cfg
可通过两种方式进行条件配置检查:
cfg
属性:#[cfg(...)]
cfg!
宏:cfg!(...)
前者可启用条件编译,而后者可在运行时进行条件求值判断。
// 该 cfg 限制仅在 Linux 下编译此代码
#[cfg(target_os = "linux")]
fn on_linux() {
println!("Running Linux!");
}
fn main() {
on_linux();
// 运行时判断是否是 Linux
if cfg!(target_os = "linux") {
println!("Yes, on linux!");
} else {
println!("No, not on linux!");
}
}
代码挑战
尝试修改编辑器中代码以正确使用
cfg
属性。
Loading...
> 此处输出代码运行结果