appendix-02-operators.md
commit 396fdb69de7fb18f24b15c7ad13491b1c1fa7231
該附錄包含了 Rust 語法的詞匯表,包括運算符以及其他的符號,這些符號單獨出現(xiàn)或出現(xiàn)在路徑、泛型、trait bounds、宏、屬性、注釋、元組以及大括號上下文中。
表 B-1 包含了 Rust 中的運算符、運算符如何出現(xiàn)在上下文中的示例、簡短解釋以及該運算符是否可重載。如果一個運算符是可重載的,則該運算符上用于重載的相關(guān) trait 也會列出。
表 B-1: 運算符
運算符 | 示例 | 解釋 | 是否可重載 |
---|---|---|---|
!
|
ident!(...) , ident!{...} , ident![...]
|
宏展開 | |
!
|
!expr
|
按位非或邏輯非 | Not
|
!=
|
expr != expr
|
不等比較 | PartialEq
|
%
|
expr % expr
|
算術(shù)取余 | Rem
|
%=
|
var %= expr
|
算術(shù)取余與賦值 | RemAssign
|
&
|
&expr , &mut expr
|
借用 | |
&
|
&type , &mut type , &'a type , &'a mut type
|
借用指針類型 | |
&
|
expr & expr
|
按位與 | BitAnd
|
&=
|
var &= expr
|
按位與及賦值 | BitAndAssign
|
&&
|
expr && expr
|
短路(Short-circuiting)邏輯與 | |
*
|
expr * expr
|
算術(shù)乘法 | Mul
|
*=
|
var *= expr
|
算術(shù)乘法與賦值 | MulAssign
|
*
|
*expr
|
解引用 | Deref
|
*
|
*const type , *mut type
|
裸指針 | |
+
|
trait + trait , 'a + trait
|
復(fù)合類型限制 | |
+
|
expr + expr
|
算術(shù)加法 | Add
|
+=
|
var += expr
|
算術(shù)加法與賦值 | AddAssign
|
,
|
expr, expr
|
參數(shù)以及元素分隔符 | |
-
|
- expr
|
算術(shù)取負(fù) | Neg
|
-
|
expr - expr
|
算術(shù)減法 | Sub
|
-=
|
var -= expr
|
算術(shù)減法與賦值 | SubAssign
|
->
|
fn(...) -> type , |...| -> type
|
函數(shù)與閉包,返回類型 | |
.
|
expr.ident
|
成員訪問 | |
..
|
.. , expr.. , ..expr , expr..expr
|
右開區(qū)間范圍 | PartialOrd
|
..=
|
..=expr , expr..=expr
|
右閉區(qū)間范圍模式 | PartialOrd
|
..
|
..expr
|
結(jié)構(gòu)體更新語法 | |
..
|
variant(x, ..) , struct_type { x, .. }
|
“與剩余部分” 的模式綁定 | |
...
|
expr...expr
|
(Deprecated,請使用 ..= )在模式中: 閉區(qū)間范圍模式 |
|
/
|
expr / expr
|
算術(shù)除法 | Div
|
/=
|
var /= expr
|
算術(shù)除法與賦值 | DivAssign
|
:
|
pat: type , ident: type
|
約束 | |
:
|
ident: expr
|
結(jié)構(gòu)體字段初始化 | |
:
|
'a: loop {...}
|
循環(huán)標(biāo)志 | |
;
|
expr;
|
語句和語句結(jié)束符 | |
;
|
[...; len]
|
固定大小數(shù)組語法的部分 | |
<<
|
expr << expr
|
左移 | Shl
|
<<=
|
var <<= expr
|
左移與賦值 | ShlAssign
|
<
|
expr < expr
|
小于比較 | PartialOrd
|
<=
|
expr <= expr
|
小于等于比較 | PartialOrd
|
=
|
var = expr , ident = type
|
賦值/等值 | |
==
|
expr == expr
|
等于比較 | PartialEq
|
=>
|
pat => expr
|
匹配準(zhǔn)備語法的部分 | |
>
|
expr > expr
|
大于比較 | PartialOrd
|
>=
|
expr >= expr
|
大于等于比較 | PartialOrd
|
>>
|
expr >> 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?
|
錯誤傳播 |
下面的列表中包含了所有和運算符不一樣功能的符號;也就是說,他們并不像函數(shù)調(diào)用或方法調(diào)用一樣表現(xiàn)。
表 B-2 展示了以其自身出現(xiàn)以及出現(xiàn)在合法其他各個地方的符號。
表 B-2:獨立語法
符號 | 解釋 |
---|---|
'ident
|
命名生命周期或循環(huán)標(biāo)簽 |
...u8 , ...i32 , ...f64 , ...usize 等 |
指定類型的數(shù)值常量 |
"..."
|
字符串常量 |
r"..." , r#"..."# , r##"..."## , etc. |
原始字符串字面值,未處理的轉(zhuǎn)義字符 |
b"..."
|
字節(jié)字符串字面值; 構(gòu)造一個字節(jié)數(shù)組類型而非字符串 |
br"..." , br#"..."# , br##"..."## 等 |
原始字節(jié)字符串字面值,原始和字節(jié)字符串字面值的結(jié)合 |
'...'
|
字符字面值 |
b'...'
|
ASCII 碼字節(jié)字面值 |
|...| expr
|
閉包 |
!
|
離散函數(shù)的總是為空的類型 |
_
|
“忽略” 模式綁定;也用于增強整型字面值的可讀性 |
表 B-3 展示了出現(xiàn)在從模塊結(jié)構(gòu)到項的路徑上下文中的符號
表 B-3:路徑相關(guān)語法
符號 | 解釋 |
---|---|
ident::ident
|
命名空間路徑 |
::path
|
與 crate 根相對的路徑(如一個顯式絕對路徑) |
self::path
|
與當(dāng)前模塊相對的路徑(如一個顯式相對路徑) |
super::path
|
與父模塊相對的路徑 |
type::ident , <type as trait>::ident
|
關(guān)聯(lián)常量、函數(shù)以及類型 |
<type>::...
|
不可以被直接命名的關(guān)聯(lián)項類型(如 <&T>::... ,<[T]>::... , 等) |
trait::method(...)
|
通過命名定義的 trait 來消除方法調(diào)用的二義性 |
type::method(...)
|
通過命名定義的類型來消除方法調(diào)用的二義性 |
<type as trait>::method(...)
|
通過命名 trait 和類型來消除方法調(diào)用的二義性 |
表 B-4 展示了出現(xiàn)在泛型類型參數(shù)上下文中的符號。
表 B-4:泛型
符號 | 解釋 |
---|---|
path<...>
|
為一個類型中的泛型指定具體參數(shù)(如 Vec<u8> ) |
path::<...> , method::<...>
|
為一個泛型、函數(shù)或表達(dá)式中的方法指定具體參數(shù),通常指 turbofish(如 "42".parse::<i32>() ) |
fn ident<...> ...
|
泛型函數(shù)定義 |
struct ident<...> ...
|
泛型結(jié)構(gòu)體定義 |
enum ident<...> ...
|
泛型枚舉定義 |
impl<...> ...
|
定義泛型實現(xiàn) |
for<...> type
|
高級生命周期限制 |
type<ident=type>
|
泛型,其一個或多個相關(guān)類型必須被指定為特定類型(如 Iterator<Item=T> ) |
表 B-5 展示了出現(xiàn)在使用 trait bounds 約束泛型參數(shù)上下文中的符號。
表 B-5: Trait Bound 約束
符號 | 解釋 |
---|---|
T: U
|
泛型參數(shù) T 約束于實現(xiàn)了 U 的類型 |
T: 'a
|
泛型 T 的生命周期必須長于 'a (意味著該類型不能傳遞包含生命周期短于 'a 的任何引用) |
T: 'static
|
泛型 T 不包含除 'static 之外的借用引用 |
'b: 'a
|
泛型 'b 生命周期必須長于泛型 'a
|
T: ?Sized
|
使用一個不定大小的泛型類型 |
'a + trait , trait + trait
|
復(fù)合類型限制 |
表 B-6 展示了在調(diào)用或定義宏以及在其上指定屬性時的上下文中出現(xiàn)的符號。
表 B-6: 宏與屬性
符號 | 解釋 |
---|---|
#[meta]
|
外部屬性 |
#![meta]
|
內(nèi)部屬性 |
$ident
|
宏替換 |
$ident:kind
|
宏捕獲 |
$(…)…
|
宏重復(fù) |
ident!(...) , ident!{...} , ident![...]
|
宏調(diào)用 |
表 B-7 展示了寫注釋的符號。
表 B-7: 注釋
符號 | 注釋 |
---|---|
//
|
行注釋 |
//!
|
內(nèi)部行文檔注釋 |
///
|
外部行文檔注釋 |
/*...*/
|
塊注釋 |
/*!...*/
|
內(nèi)部塊文檔注釋 |
/**...*/
|
外部塊文檔注釋 |
表 B-8 展示了出現(xiàn)在使用元組時上下文中的符號。
表 B-8: 元組
符號 | 解釋 |
---|---|
()
|
空元組(亦稱單元),即是字面值也是類型 |
(expr)
|
括號表達(dá)式 |
(expr,)
|
單一元素元組表達(dá)式 |
(type,)
|
單一元素元組類型 |
(expr, ...)
|
元組表達(dá)式 |
(type, ...)
|
元組類型 |
expr(expr, ...)
|
函數(shù)調(diào)用表達(dá)式;也用于初始化元組結(jié)構(gòu)體 struct 以及元組枚舉 enum 變體 |
expr.0 , expr.1 , etc. |
元組索引 |
表 B-9 展示了使用大括號的上下文。
表 B-9: 大括號
符號 | 解釋 |
---|---|
{...}
|
塊表達(dá)式 |
Type {...}
|
struct 字面值 |
表 B-10 展示了使用方括號的上下文。
表 B-10: 方括號
符號 | 解釋 |
---|---|
[...]
|
數(shù)組 |
[expr; len]
|
復(fù)制了 len 個 expr 的數(shù)組 |
[type; len]
|
包含 len 個 type 類型的數(shù)組 |
expr[expr]
|
集合索引。 重載(Index , IndexMut ) |
expr[..] , expr[a..] , expr[..b] , expr[a..b]
|
集合索引,使用 Range ,RangeFrom ,RangeTo 或 RangeFull 作為索引來代替集合 slice |
更多建議: