W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
appendix-01-keywords.md
commit efbafdba3618487fbc9305318fcab9775132ac15
下面的列表包含 Rust 中正在使用或者以后會用到的關(guān)鍵字。因此,這些關(guān)鍵字不能被用作標識符(除了 “原始標識符” 部分介紹的原始標識符),這包括函數(shù)、變量、參數(shù)、結(jié)構(gòu)體字段、模塊、crate、常量、宏、靜態(tài)值、屬性、類型、trait 或生命周期 的名字。
如下關(guān)鍵字目前有對應其描述的功能。
as
? - 強制類型轉(zhuǎn)換,消除特定包含項的 trait 的歧義,或者對 ?use
? 語句中的項重命名async
? - 返回一個 ?Future
? 而不是阻塞當前線程await
? - 暫停執(zhí)行直到 ?Future
? 的結(jié)果就緒break
? - 立刻退出循環(huán)const
? - 定義常量或不變裸指針(constant raw pointer)continue
? - 繼續(xù)進入下一次循環(huán)迭代crate
? - 在模塊路徑中,代指 crate rootdyn
? - 動態(tài)分發(fā) trait 對象else
? - 作為 ?if
? 和 ?if let
? 控制流結(jié)構(gòu)的 fallbackenum
? - 定義一個枚舉extern
? - 鏈接一個外部函數(shù)或變量false
? - 布爾字面值 ?false
?fn
? - 定義一個函數(shù)或 函數(shù)指針類型 (function pointer type)for
? - 遍歷一個迭代器或?qū)崿F(xiàn)一個 trait 或者指定一個更高級的生命周期if
? - 基于條件表達式的結(jié)果分支impl
? - 實現(xiàn)自有或 trait 功能in
? - ?for
? 循環(huán)語法的一部分let
? - 綁定一個變量loop
? - 無條件循環(huán)match
? - 模式匹配mod
? - 定義一個模塊move
? - 使閉包獲取其所捕獲項的所有權(quán)mut
? - 表示引用、裸指針或模式綁定的可變性pub
? - 表示結(jié)構(gòu)體字段、?impl
? 塊或模塊的公有可見性ref
? - 通過引用綁定return
? - 從函數(shù)中返回Self
? - 定義或?qū)崿F(xiàn) trait 的類型的類型別名self
? - 表示方法本身或當前模塊static
? - 表示全局變量或在整個程序執(zhí)行期間保持其生命周期struct
? - 定義一個結(jié)構(gòu)體super
? - 表示當前模塊的父模塊trait
? - 定義一個 traittrue
? - 布爾字面值 ?true
?type
? - 定義一個類型別名或關(guān)聯(lián)類型union
? - 定義一個 union 并且是 union 聲明中唯一用到的關(guān)鍵字unsafe
? - 表示不安全的代碼、函數(shù)、trait 或?qū)崿F(xiàn)use
? - 引入外部空間的符號where
? - 表示一個約束類型的從句while
? - 基于一個表達式的結(jié)果判斷是否進行循環(huán)如下關(guān)鍵字沒有任何功能,不過由 Rust 保留以備將來的應用。
abstract
?become
?box
?do
?final
?macro
?override
?priv
?try
?typeof
?unsized
?virtual
?yield
?原始標識符(Raw identifiers)允許你使用通常不能使用的關(guān)鍵字,其帶有 r#
前綴。
例如,match
是關(guān)鍵字。如果嘗試編譯如下使用 match
作為名字的函數(shù):
fn match(needle: &str, haystack: &str) -> bool {
haystack.contains(needle)
}
會得到這個錯誤:
error: expected identifier, found keyword `match`
--> src/main.rs:4:4
|
4 | fn match(needle: &str, haystack: &str) -> bool {
| ^^^^^ expected identifier, found keyword
該錯誤表示你不能將關(guān)鍵字 match
用作函數(shù)標識符。你可以使用原始標識符將 match
作為函數(shù)名稱使用:
文件名: src/main.rs
fn r#match(needle: &str, haystack: &str) -> bool {
haystack.contains(needle)
}
fn main() {
assert!(r#match("foo", "foobar"));
}
此代碼編譯沒有任何錯誤。注意 r#
前綴需同時用于函數(shù)名定義和 main
函數(shù)中的調(diào)用。
原始標識符允許使用你選擇的任何單詞作為標識符,即使該單詞恰好是保留關(guān)鍵字。 這給予了我們更大的自由來選擇名字,這樣與其他語言交互式就不用考慮到關(guān)鍵字問題,在要交互的語言中這個名字不是關(guān)鍵字。此外,原始標識符允許你使用以不同于你的 crate 使用的 Rust 版本編寫的庫。比如,try
在 2015 edition 中不是關(guān)鍵字,而在 2018 edition 則是。所以如果用 2015 edition 編寫的庫中帶有 try
函數(shù),在 2018 edition 中調(diào)用時就需要使用原始標識符語法,在這里是 r#try
。有關(guān)版本的更多信息,請參見附錄 E。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: