Rust 教程
- 第1节:Rust 介绍
- 第2节:Rust 安装
- 第3节:Rust Hello,world!
- 第4节:Rust Hello,Cargo!
- 第5节:Rust 栈和堆
- 第6节:Rust 测试
- 第7节:Rust 条件编译
- 第8节:Rust 文档
- 第9节:Rust 迭代器
- 第10节:Rust 并发性
- 第11节:Rust 错误处理
- 第12节:Rust 外部函数接口
- 第13节:Rust Borrow 和 AsRef
- 第14节:Rust 发布通道
- 第15节:Rust 变量绑定
- 第16节:Rust 函数
- 第17节:Rust 基本类型
- 第18节:Rust 注释
- 第19节:Rust if
- 第20节:Rust for 循环
- 第21节:Rust while 循环
- 第22节:Rust 所有权
- 第23节:Rust 引用与借用
- 第24节:Rust 生存期
- 第25节:Rust 可变性
- 第26节:Rust 结构体
- 第27节:Rust 枚举
- 第28节:Rust 匹配
- 第29节:Rust 模式
- 第30节:Rust 方法语法
- 第31节:Rust 向量
- 第32节:Rust 字符串
- 第33节:Rust 泛型
- 第34节:Rust 特征
- 第35节:Rust 降
- 第36节:Rust if let
- 第37节:Rust 特征的对象
- 第38节:Rust 闭包
- 第39节:Rust 通用函数调用语法
- 第40节:Rust 箱和模块
- 第41节:Rust “常量”和“静态”
- 第42节:Rust 属性
- 第43节:Rust type 别名
- 第44节:Rust 类型转换
- 第45节:Rust 关联类型
- 第46节:Rust 全类型
- 第47节:Rust 操作符和重载
- 第48节:Rust 'Deref'强制转换
- 第49节:Rust 宏命令
- 第50节:Rust 原始指针
- 第51节:Rust unsafe
Rust 属性
属性
在 Rust 语言中,声明可以用 ‘attributes’ 来注释。它们看起来像下面这样:
#[test]
或者是像这样:
#![test]
两者的区别是!,!改变了属性所能够适用的事物:
#[foo]
struct Foo;
mod bar {
#![bar]
}
#(foo)
属性应用到下一个项目,而这个项目就是结构体声明。 #![bar] 属性适用于包含它的项目,这种属性是一个 mod 声明。否则,它们是相同的。这样都在某种程度上改变项了目的意义。
例如,考虑这样一个函数:
#[test]
fn check() {
assert_eq!(2, 1 + 1);
}
这是用 #[test] 来标志的。这意味着它是特殊的:当您运行测试时,该函数将执行。当你和往常一样编译时, #[test] 甚至不会被包括在编译的范围之内。这个函数是现在一个测试函数。
属性也可能含有额外的数据:
#[inline(always)]
fn super_fast_fn() {
或者甚至是关键字和值:
#[cfg(target_os = "macos")]
mod macos_only {
Rust 属性被用于许多不同的事情。这有一个属性的完整引用列表。目前,不允许用户创建自己的属性,只能由 Rust 编译器来定义它们。