属性

Rust 程序中的任何特性项都可以用 属性(attribute) 来修饰。属性是 Rust 中写给编译器看的各种指令和建议的普适语法。

出现的形式是在文件的最开始文件,在变量、函数、方法、结构体等各种代码的上方:

#[...]

可以简单的理解就是开启功能

常见属性举例

  • #[allow]

    允许某些行为通过编译器的检查,如:

    #[allow(non_camel_case_types)],允许非驼峰形式的命名方式;
    #allow[unused_xxx],允许未使用的某些东西;
    #allow[dead_code],允许未使用的代码;

  • #[cfg]

    添加条件编译的内容,例举一些最常用的部分:

#[cfg(...)] 选项何时启用
test启用测试,方式可以是 cargo test 或 rustc --test
debug_assertions启用调试断言
unix为 Unix 编译(包括 macOS)
windows为 Windows 编译
target_pointer_width = "64"为 64 位平台编译,还可以是:32
target_arch = "x86_64"为 x86_64 架构编译。
其它值还有:x86、arm、aarch64 ……
target_os = "macos"为 macos 编译。
其它值还有:windows、ios、android ……
feature = "robots"开启了 robots 特性,方式可以是cargo build --feature robots
或 cargo build --cfg feature='"robots"'
或在 Cargo.toml 的 [features] 下申明
(A) not(A)成对出现,提供一个函数的两种实现,分别对应满足 A 和不满足 A 的情况
all(A, B)A 和 B 都满足时(&&)
any(A, B)A 或 B 满足时(

  • #[inline]

    #[inline(always)]、#[inline(never)]

  • #[feature(xxx)]

    开启某些特性。

  • #[derive] 使用 derive 属性的属性,会有编译器生成对应 trait 的默认实现代码。

    需要先写过程宏。

    标准库中的可派生 trait:DebugPartialEqEqPartialOrdOrdCloneCopyHashDefault