属性是应用于某些模块、crate或者项的元数据。这些元数据可以有以下用途:

  • 条件编译代码
  • 设置crate名称、版本和类型
  • 禁用lint警告
  • 启用编译器的特性(如宏、全局导入等)
  • 连接到一个非Rust语言的库
  • 标记函数作为单元测试
  • 标记函数作为基准测试的某个部分

作用于整个crate时,语法为​​#![crate_attribute]​​(注意:有感叹号!)

作用于模块或者项时,语法为​​#[item_attribute]​​(注意:无感叹号)

属性可以接收参数,其语法形式如下:

  • ​#[attribute = "value"]​
  • ​#[attribute(key = "value")]​
  • ​#[attribute(value)]​
  • ​#[attribute(value1, value2, value3, value4, value5)]​