附录 B:运算符和符号
本附录包含 Rust 语法的词汇表,包括运算符和 单独出现或在路径上下文中出现的其他符号、泛型、 trait bounds、macros、attributes、comments、tuples 和 brackets。
运营商
表 B-1 包含 Rust 中的运算符,这是运算符如何作的示例 出现在上下文中,简短说明,以及该运算符是否为 overloadable 的。如果运算符是可重载的,则用于 overload 的 Sql S Package。
表 B-1:运算符
| 算子 | 例 | 解释 | 超载? | 
|---|---|---|---|
| ! | ident!(...),ident!{...},ident![...] | 宏扩展 | |
| ! | !expr | 按位或逻辑补码 | Not | 
| != | expr != expr | 非相等比较 | PartialEq | 
| % | expr % expr | 算术余数 | Rem | 
| %= | var %= expr | 算术余数和赋值 | RemAssign | 
| & | &expr,&mut expr | 借 | |
| & | &type,&mut type,&'a type,&'a mut type | 借用的指针类型 | |
| & | expr & expr | 按位 AND | BitAnd | 
| &= | var &= expr | 按位 AND 和 赋值 | BitAndAssign | 
| && | expr && expr | 短路逻辑 AND | |
| * | expr * expr | 算术乘法 | Mul | 
| *= | var *= expr | 算术乘法和赋值 | MulAssign | 
| * | *expr | 引用 | Deref | 
| * | *const type,*mut type | 原始指针 | |
| + | trait + trait,'a + trait | 复合类型约束 | |
| + | expr + expr | 算术加法 | Add | 
| += | var += expr | 算术加法和赋值 | AddAssign | 
| , | expr, expr | 参数和元素分隔符 | |
| - | - expr | 算术否定 | Neg | 
| - | expr - expr | 算术减法 | Sub | 
| -= | var -= expr | 算术减法和赋值 | SubAssign | 
| -> | fn(...) -> type,|…| -> type | 函数和闭包返回类型 | |
| . | expr.ident | 会员访问 | |
| .. | ..,expr..,..expr,expr..expr | 右互斥范围文字 | PartialOrd | 
| ..= | ..=expr,expr..=expr | 右包含范围文本 | PartialOrd | 
| .. | ..expr | 结构文本更新语法 | |
| .. | variant(x, ..),struct_type { x, .. } | “And the rest” 图案装订 | |
| ... | expr...expr | (已弃用,请使用 ..=instead) In a pattern: inclusive range pattern | |
| / | expr / expr | 算术除法 | Div | 
| /= | var /= expr | 算术除法和赋值 | DivAssign | 
| : | pat: type,ident: type | 约束 | |
| : | ident: expr | 结构体字段初始值设定项 | |
| : | 'a: loop {...} | Loop 标签 | |
| ; | expr; | 语句和项终止符 | |
| ; | [...; len] | 固定大小数组语法的一部分 | |
| << | expr << expr | 左移 | Shl | 
| <<= | var <<= expr | 左移和赋值 | ShlAssign | 
| < | expr < expr | 小于比较 | PartialOrd | 
| <= | expr <= expr | 小于或等于比较 | PartialOrd | 
| = | var = expr,ident = type | 赋值/等效 | |
| == | expr == expr | 相等比较 | PartialEq | 
| => | pat => expr | match arm 语法的一部分 | |
| > | expr > expr | 大于比较 | PartialOrd | 
| >= | expr >= expr | 大于或等于比较 | PartialOrd | 
| >> | expr >> expr | 右移 | Shr | 
| >>= | var >>= expr | 右移和赋值 | ShrAssign | 
| @ | ident @ pat | 模式绑定 | |
| ^ | expr ^ expr | 按位异或 | BitXor | 
| ^= | var ^= expr | 按位异 OR 和赋值 | BitXorAssign | 
| | | pat | pat | 模式替代项 | |
| | | expr | expr | 按位 OR | BitOr | 
| |= | var |= expr | 按位 OR 和赋值 | BitOrAssign | 
| || | expr || expr | 短路逻辑 OR | |
| ? | expr? | 错误传播 | 
非运算符符号
以下列表包含所有不用作运算符的元件;那 是,它们的行为不像函数或方法调用。
表 B-2 显示了单独出现的符号,这些符号在各种 地点。
表 B-2:独立语法
| 象征 | 解释 | 
|---|---|
| 'ident | 命名生命周期或循环标签 | 
| ...u8,...i32,...f64,...usize等。 | 特定类型的数值文本 | 
| "..." | 字符串文本 | 
| r"...",r#"..."#,r##"..."##等。 | 原始字符串文本,未处理转义字符 | 
| b"..." | 字节字符串文字;构造一个字节数组而不是字符串 | 
| br"...",br#"..."#,br##"..."##等。 | 原始字节字符串文本,原始文本和字节字符串文本的组合 | 
| '...' | 字符字面量 | 
| b'...' | ASCII 字节文本 | 
| |…| expr | 关闭 | 
| ! | 用于发散函数的 Always empty bottom type | 
| _ | “忽略”模式绑定;还用于使整数文本可读 | 
表 B-3 显示了在通过模块的路径上下文中出现的符号 hierarchy 添加到项中。
表 B-3:与路径相关的语法
| 象征 | 解释 | 
|---|---|
| ident::ident | 命名空间路径 | 
| ::path | 相对于 crate 根的路径(即显式绝对路径) | 
| self::path | 相对于当前模块的 Path (即显式相对 path)。 | 
| super::path | 相对于当前模块父模块的路径 | 
| type::ident,<type as trait>::ident | 关联的常量、函数和类型 | 
| <type>::... | 无法直接命名的类型的关联项(例如 <&T>::...,<[T]>::...等) | 
| trait::method(...) | 通过命名定义方法调用的 trait 来消除方法调用的歧义 | 
| type::method(...) | 通过命名为其定义方法调用的类型来消除方法调用的歧义 | 
| <type as trait>::method(...) | 通过命名 trait 和 type 来消除方法调用的歧义 | 
表 B-4 显示了在使用泛型类型的上下文中出现的符号 参数。
表 B-4:泛型
| 象征 | 解释 | 
|---|---|
| path<...> | 指定类型中泛型类型的参数(例如 Vec<u8>) | 
| path::<...>,method::<...> | 指定表达式中泛型类型、函数或方法的参数;通常被称为 Turbofish(例如 "42".parse::<i32>()) | 
| fn ident<...> ... | 定义通用函数 | 
| struct ident<...> ... | 定义通用结构 | 
| enum ident<...> ... | 定义泛型枚举 | 
| impl<...> ... | 定义泛型实现 | 
| for<...> type | 更高等级的生命周期边界 | 
| type<ident=type> | 一种泛型类型,其中一个或多个关联类型具有特定的赋值(例如 Iterator<Item=T>) | 
表 B-5 显示了在约束泛型类型的上下文中出现的符号 参数。
表 B-5:特征绑定约束
| 象征 | 解释 | 
|---|---|
| T: U | 泛型参数 Tconstrained to 实现U | 
| T: 'a | 泛型类型 T必须比寿命长'a(意味着该类型不能传递包含任何生存期短于'a) | 
| T: 'static | 泛型类型 T不包含除'static的 | 
| 'b: 'a | 通用生命周期 'b必须比寿命长'a | 
| T: ?Sized | 允许泛型类型参数为动态大小的类型 | 
| 'a + trait,trait + trait | 复合类型约束 | 
表 B-6 显示了在调用或定义的上下文中出现的符号 宏和指定项的属性。
表 B-6:宏和属性
| 象征 | 解释 | 
|---|---|
| #[meta] | 外部属性 | 
| #![meta] | Inner 属性 | 
| $ident | 宏替换 | 
| $ident:kind | 宏捕获 | 
| $(…)… | 宏重复 | 
| ident!(...),ident!{...},ident![...] | 宏调用 | 
表 B-7 显示了创建注释的符号。
表 B-7:注释
| 象征 | 解释 | 
|---|---|
| // | 线条注释 | 
| //! | 内行文档注释 | 
| /// | 外线文档注释 | 
| /*...*/ | 块注释 | 
| /*!...*/ | 内部块文档注释 | 
| /**...*/ | 外部块文档注释 | 
表 B-8 显示了在使用元组的上下文中出现的符号。
表 B-8:元组
| 象征 | 解释 | 
|---|---|
| () | 空元组(又名 unit),文本和类型 | 
| (expr) | 带括号的表达式 | 
| (expr,) | 单元素元组表达式 | 
| (type,) | 单元素元组类型 | 
| (expr, ...) | 元组表达式 | 
| (type, ...) | 元组类型 | 
| expr(expr, ...) | 函数调用表达式;也用于初始化元组 structs 和 tupleenum变种 | 
| expr.0,expr.1等。 | 元组索引 | 
表 B-9 显示了使用大括号的上下文。
表 B-9:大括号
| 上下文 | 解释 | 
|---|---|
| {...} | 块表达式 | 
| Type {...} | struct字面 | 
表 B-10 显示了使用方括号的上下文。
表 B-10:方括号
| 上下文 | 解释 | 
|---|---|
| [...] | 数组字面量 | 
| [expr; len] | 数组文本包含 len副本expr | 
| [type; len] | 数组类型包含 len的实例type | 
| expr[expr] | 集合索引。可重载 ( Index,IndexMut) | 
| expr[..],expr[a..],expr[..b],expr[a..b] | 伪装成集合切片的集合索引,使用 Range,RangeFrom,RangeTo或RangeFull作为 “index” | 
本文档由官方文档翻译而来,如有差异请以官方英文文档(https://doc.rust-lang.org/)为准