appendix-02-operators.md
commit f83c4d08d2bc9c1e1c33037747ffe818b397e67a
该附录包含了 Rust 语法的词汇表,包括运算符以及其他的符号,这些符号单独出现或出现在路径、泛
型、trait bounds、宏、属性、注释、元组以及大括号上下文中。
运算符
表 B-1 包含了 Rust 中的运算符、运算符如何出现在上下文中的示例、简短解释以及该运算符是否可重
载。如果一个运算符是可重载的,则该运算符上用于重载的相关 trait 也会列出。
表 B-1: 运算符
运算符 示例 解释 是否可重载
!
ident !(…) , ident !{…} ,
ident ![…] 宏展开
! !expr 按位非或逻辑非 Not
!= var != expr 不等比较 PartialEq
% expr % expr 算术取余 Rem
%= var %= expr 算术取余与赋值 RemAssign
& &expr, &mut expr 借用
&
&type, &mut type,
&’a type, &’a mut type 借用指针类型
& expr & expr 按位与 BitAnd
&= var &= expr 按位与及赋值 BitAndAssign
&& expr && expr 短路(Short-circuiting)
逻辑与
- 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, … } ” 与剩余部分” 的模式绑定
… expr… expr
(Deprecated,请使用
…=)在模式中: 闭区间范
围模式
∕ expr ∕ expr 算术除法 Div
∕= var ∕= expr 算术除法与赋值 DivAssign
21.2. 附录 B:运算符与符号 579
: pat: type, ident: type 约束
: ident: expr 结构体字段初始化
: ’ a: loop {…} 循环标志
; expr; 语句和语句结束符
; […; len] 固定大小数组语法的部分
<< expr << expr 左移 Shl
<<= var <<= expr 左移与赋值 ShlAssign
< expr < expr 小于比较 PartialOrd
<= expr <= expr 小于等于比较 PartialOrd
= var = expr, ident = type 赋值∕等值
== expr == expr 等于比较 PartialEq
=> pat => expr 匹配准备语法的部分
expr > expr 大于比较 PartialOrd
= expr >= expr 大于等于比较 PartialOrdexpr >> expr 右移 Shr
= var >>= expr 右移与赋值 ShrAssign
@ ident @ pat 模式绑定
^ expr ^ expr 按位异或 BitXor
^= var ^= expr 按位异或与赋值 BitXorAssign
| pat | pat 模式选择
| expr | expr 按位或 BitOr
|= var |= expr 按位或与赋值 BitOrAssign
|| expr || expr 短路(Short-circuiting)
逻辑或
? expr? 错误传播