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