Rust基本語法整理 三

2021-10-08 12:31:02 字數 1519 閱讀 6777

try_recv不會阻塞,相反它立刻返回乙個 result:ok 值包含可用的資訊,而 err 值代表此時沒有任何訊息

trait 物件而不是繼承。讓我們看一下 rust 中的 trait 物件是如何實現多型的。

這個 vector 的型別是 box,此為乙個 trait 物件:它是 box 中任何實現了 draw trait 的型別的替身

screen 例項必須擁有乙個全是 button 型別或者全是 textfield 型別的元件列表。如果只需要同質(相同型別)集合,則傾向於使用泛型和 trait bound

物件安全(object safe)的 trait 才可以組成 trait 物件

注意不同於使用 self、 &self 或者 &mut self 作為方法的第乙個引數,這裡使用了 self: box。這個語法意味著這個方法呼叫只對這個型別的 box 有效。這個語法獲取了 box 的所有權

option 的 as_ref 方法是因為需要 option 中值的引用而不是獲取其所有權

乙個與 if let 結構類似的是 while let 條件迴圈,它允許只要模式匹配就一直進行 while 迴圈

模式有兩種形式:refutable(可反駁的)和 irrefutable(不可反駁的)。能匹配任何傳遞的可能值的模式被稱為是 不可反駁的(irrefutable)。乙個例子就是 let x = 5; 語句中的 x,因為 x 可以匹配任何值所以不可能會失敗。對某些可能的值進行匹配會失敗的模式被稱為是 可反駁的(refutable)。乙個這樣的例子便是 if let some(x) = a_value 表示式中的 some(x);如果變數 a_value 中的值是 none 而不是 some,那麼 some(x) 模式不能匹配

match

…= 語法允許你匹配乙個閉區間範圍內的值

範圍只允許用於數字或 char 值,因為編譯器會在編譯時檢查範圍不為空。char 和 數字值是 rust 僅有的可以判斷範圍是否為空的型別

對於像 message::write 這樣的包含乙個元素,以及像 message::changecolor 這樣包含兩個元素的類元組列舉成員,其模式則類似於用於解構元組的模式。模式中變數的數量必須與成員中元素的數量一致

在函式簽名中使用_

匹配守衛(match guard)是乙個指定於 match 分支模式之後的額外 if 條件

@ 繫結

at 運算子(@)允許我們在建立乙個存放值的變數的同時測試其值是否匹配模式

裸指標(raw pointers)的類似於引用的新型別。和引用一樣,裸指標是可變或不可變的,分別寫作 *const t 和 *mut t

外部函式介面(foreign function inte***ce, ffi)

也可以使用 extern 來建立乙個允許其他語言呼叫 rust 函式的介面。不同於 extern 塊,就在 fn 關鍵字之前增加 extern 關鍵字並指定所用到的 abi。還需增加 #[no_mangle] 註解來告訴 rust 編譯器不要 mangle 此函式的名稱

rust整理筆記 rust基本操作 01

1.安裝 1.1 rust mac安裝 curl ssf shsource home cargo env1.2.顯示rustc版本 rustc version 注 如果顯示版本號 提交的 hash 值和提交時間,恭喜你!則 rust 已成功安裝!1.3.顯示cargo cargo version如果...

cjson基本語法整理

static const char ep 函式中使用const 1 const修飾函式引數 a.傳遞過來的引數在函式內不可以改變 無意義,因為var本身就是形參 void function const int var b.引數指標所指內容為常量不可變 void function const char...

VBA基本語法整理

1.區域性變數 在sub或者function結構中定義的變數 2.全域性變數 public name 普通全域性變數 public styledic as object 字典全域性變數普通變數,直接用 name zjmainstay 賦值即可。定義乙個字典變數 dim styledic as obj...