Rust 附錄 B:運算符與符號

2023-03-22 15:16 更新
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....exprexpr..expr 右開區(qū)間范圍 PartialOrd
..= ..=exprexpr..=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: typeident: 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 = exprident = 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 + traittrait + 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.0expr.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] 集合索引。 重載(IndexIndexMut
expr[..]expr[a..]expr[..b]expr[a..b] 集合索引,使用 Range,RangeFromRangeTo 或 RangeFull 作為索引來代替集合 slice


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號