rust 學習之旅二,關鍵字和保留字


當前,以下關鍵字具有所描述的功能。

as-執行原始類型轉換,消除包含項目的特定特征的歧義,或在useand extern crate語句中重命名項目
async-返回a Future而不是阻塞當前線程
await-暫停執行直到a的結果Future准備好
break -立即退出循環
const -定義常量項目或常量原始指針
continue -繼續進行下一個循環迭代
crate -鏈接一個外部板條箱或一個宏變量,該變量代表定義宏的板條箱
dyn -動態分配給特征對象
else-回退if並if let控制流程構造
enum -定義一個枚舉
extern -鏈接外部板條箱,函數或變量
false -布爾型假文字
fn -定義函數或函數指針類型
for -循環遍歷迭代器中的項目,實現特征或指定更高級別的生存期
if -根據條件表達式的結果進行分支
impl -實現固有或特征功能
in- for循環語法的一部分
let -綁定變量
loop -無條件循環
match -將值匹配到模式
mod -定義一個模塊
move -使封包對其所有捕獲物擁有所有權
mut -表示引用,原始指針或模式綁定中的可變性
pub-表示結構字段,impl塊或模塊中的公共可見性
ref -通過引用綁定
return -從函數返回
Self -我們正在定義或實現的類型的類型別名
self -方法主題或當前模塊
static -持續整個程序執行的全局變量或生命周期
struct -定義一個結構
super -當前模塊的父模塊
trait -定義一個特征
true -布爾值真實文字
type -定義類型別名或關聯的類型
unsafe -表示不安全的代碼,功能,特征或實現
use -將符號納入范圍
where -表示約束類型的子句
while -根據表達式的結果有條件地循環
保留以備將來使用的關鍵字
以下關鍵字沒有任何功能,但被Rust保留,以備將來使用。

abstract
become
box
do
final
macro
override
priv
try
typeof
unsized
virtual
yield
原始標識符
原始標識符是一種語法,可讓您在通常不允許使用的關鍵字中使用關鍵字。您可以通過在關鍵字前面加上來使用原始標識符r#。

例如,match是一個關鍵字。如果嘗試編譯使用以下函數match作為其名稱的函數:

文件名:src / main.rs


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
該錯誤表明您不能將關鍵字match用作功能標識符。要將其match用作函數名,您需要使用原始標識符語法,如下所示:

文件名:src / main.rs


fn r#match(needle: &str, haystack: &str) -> bool {
haystack.contains(needle)
}

fn main() {
assert!(r#match("foo", "foobar"));
}
此代碼將編譯而沒有任何錯誤。請注意r#函數名稱在其定義中的前綴以及在中調用該函數的位置main。

原始標識符允許您使用選擇的任何單詞作為標識符,即使該單詞恰好是保留關鍵字。另外,原始標識符使您可以使用以與包裝箱不同的Rust版本編寫的庫。例如,try不是2015年版的關鍵字,而是2018年版的關鍵字。如果您依賴使用2015版編寫的並且具有try功能的庫,則r#try在這種情況下,需要使用原始標識符語法從2018版代碼中調用該函數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM