属性是应用于某些模块、crate 或项的元数据(metadata)。这元数据可以用来:
- 条件编译代码
- 设置 crate 名称、版本和类型(二进制文件或库)
- 禁用 lint (警告)
- 启用编译器的特性(宏、全局导入(glob import)等)
- 链接到一个非 Rust 语言的库
- 标记函数作为单元测试
- 标记函数作为基准测试的某个部分
// 编译器忽略代码
#[allow(dead_code)]
宏并不产生函数调用,而是展开成源码,并和程序的其余部分一起被编译
// 打印字符串
!println("hello world");