1K+ 次檢視
Rust 中的結構體包含額外的可見性級別。開發人員可以根據自己的需要修改這些級別。在正常情況下,Rust 中結構體的可見性是私有的,可以透過使用 pub 修飾符將其設為公有。需要注意的是,只有當我們嘗試從定義它的模組外部訪問結構體欄位時,這種可見性才有意義。當我們隱藏結構體的欄位時,我們只是試圖封裝資料。示例請考慮以下示例:mod my { // A ... 閱讀更多
189 次檢視
Rust 中的切片是相同資料型別 T 的元素集合,但與陣列不同,它不需要在編譯時知道其長度。在 Rust 中,切片是一個雙字物件,其中第一個字實際上是指向資料的指標,第二個字只是切片的長度。切片比陣列更安全,並且允許高效地訪問陣列而不進行復制。切片是從陣列、字串建立的。它們可以是可變的,也可以是不變的。切片通常指的是陣列或... 閱讀更多
140 次檢視
Rust 中出現兩種型別的錯誤,一種是可恢復錯誤,另一種是不可恢復錯誤。我們藉助 panic! 宏處理不可恢復錯誤,而 Result 型別和其他方法則幫助處理可恢復錯誤。Result 型別是 Option 型別的一個更好的版本,它只描述可能的錯誤,而不是可能的缺失。簽名Result 型別的簽名是 Result < T, E>,它只有兩種結果。它們是: Ok(T):找到一個元素 T。Err(E):找到一個帶有元素 E 的錯誤。Rust 還提供了一些不同的方法,我們可以將它們與... 閱讀更多
65 次檢視
處理執行時傳遞的引數是任何程式語言的關鍵特性之一。在 Rust 中,我們藉助 std::env::args 訪問這些引數,它返回一個迭代器,為每個傳遞的引數提供一個字串。示例請考慮以下示例:use std::env; fn main() { let args: Vec = env::args().collect(); // 第一個引數是用於呼叫程式的路徑。 println!("我的當前目錄路徑是 {}。", args[0]); println!("我獲得了 {:?} 個引數:{:?}。", args.len() - 1, &args[1..]); }我們可以這樣傳遞引數:./args 1 2 3 4 ... 閱讀更多
368 次檢視
Rust 中的 Path 結構體用於表示底層檔案系統中的檔案路徑。還需要注意的是,Rust 中的 Path 不是表示為 UTF-8 字串;而是儲存為位元組向量 (Vec)。示例請考慮以下示例: 即時演示use std::path::Path; fn main() { // 從 `&'static str` 建立一個 `Path` let path = Path::new("."); // `display` 方法返回一個 `Show`able 結構 let display = path.display(); // 檢查路徑是否存在 if path.exists() { println!("{} 存在", display); } ... 閱讀更多
222 次檢視
Rust 中的錯誤處理是藉助 panic! 宏完成的。Rust 中還有其他處理錯誤的方法,但 panic 是獨一無二的,因為它用於處理不可恢復的錯誤。當我們執行 panic! 宏時,整個程式從堆疊中展開,因此它會退出。由於程式退出方式,我們通常使用 panic! 處理不可恢復的錯誤。語法呼叫 panic 的語法如下:panic!("遇到錯誤");我們通常在括號內傳遞自定義訊息。示例請將以下程式碼作為參考: 即時演示fn drink(beverage: ... 閱讀更多
236 次檢視
Rust 為我們提供了 match 關鍵字,可用於模式匹配。它類似於 C 語言中的 switch 語句,並且會評估第一個匹配的分支。示例請考慮以下示例:fn main() { let number = 17; println!("告訴我關於 {} 的資訊", number); match number { 1 => println!("一!") 2 | 3 | 5 | 7 | 11 => println!("素數"), 13..=19 => println!("青少年"), _ => println!("不特殊"), } }在上面的示例中,我們試圖使用... 閱讀更多
159 次檢視
Rust 提供了一個 loop 關鍵字,允許我們執行無限迴圈。loop 關鍵字指示的無限迴圈可以透過使用 break 關鍵字來中斷。此外,我們還可以藉助 continue 關鍵字退出迭代並繼續無限迴圈。示例請考慮以下示例: 即時演示fn main() { let mut count = 0u32; println!("無限迴圈開始!!"); // 無限迴圈 loop { count += 1; if count == 4 { println!("四"); ... 閱讀更多
405 次檢視
Rust 還為我們提供了 HashSet 資料結構,主要用於確保資料結構中不存在重複值。如果我們嘗試將一個已存在於 HashSet 中的新值插入其中,則先前值會被我們插入的新值覆蓋。除了關鍵特性外,HashSet 還用於執行以下操作:並集 - 提取兩個集合中所有唯一的元素。差集 - 獲取第一個集合中存在但在第二個集合中不存在的所有元素。交集 - 獲取... 閱讀更多
526 次檢視
HashMap 是一種重要的資料結構,因為它允許我們以鍵值對的形式儲存資料。在 Rust 中,HashMap 透過鍵儲存值。HashMap 的鍵可以是布林值、整數、字串或任何其他實現了 Eq 和 Hash 特徵的資料型別。HashMap 的大小可以增長,當空間變得過於龐大時,它們也可以自行縮小。我們可以透過多種方式建立 HashMap,可以使用 HashMap::with_capacity(uint) 或 HashMap::new()。以下是 HashMap 支援的方法:insert()get()remove()iter()示例讓我們來看一個示例,其中我們構建一個 HashMap 並使用上面列出的所有這些操作。請考慮以下示例: 即時演示use std::collections::HashMap; fn ... 閱讀更多