Rust教學
Rust下載和安裝
Rust簡介
Rust Hello World
Rust的特點
Rust註釋
Rust開發環境安裝
Rust文檔
Rust第一個程序
Rust格式化打印
Rust調試
Rust顯示
測試用例:列表
Rust格式化
Rust原語
Rust常量和運算符
Rust元組
Rust數組和切片
Rust自定義類型
Rust結構
Rust可視性
Rust枚舉
Rust常量
Rust變量綁定
Rust變量綁定-可變性
Rust變量綁定-範圍和陰影
Rust變量綁定-聲明
Rust類型轉換
Rust類型轉換 - 字面量
Rust類型轉換-推導
Rust類型轉換 - 別名
Rust表達式
Rust if/else語句
Rust循環
Rust嵌套和標籤
Rust while循環
Rust for和範圍
Rust匹配/match
Rust匹配析構元組
Rust解構枚舉
Rust指針和引用
Rust解構結構
Rust Guards
Rust綁定
Rust if let
Rust while let
Rust函數
Rust方法
Rust閉包
Rust捕捉
Rust作爲輸入參數
Rust匿名類型
Rust輸入函數
Rust作爲輸出參數
測試用例:列表
測試用例:列表
爲元素實現 fmt::Display,必須按順序分別處理的結構是棘手的。問題是,每一個 write! 生成 fmt::Result。妥善處理這需要處理所有的結果。 Rust 提供 try! 宏正是爲這個目的。
用 try! 在 write! 看起來是這樣的:
// Try `write!` to see if it errors. If it errors, return
// the error. Otherwise continue.
try!(write!(f, "{}", value));
隨着try! 可用,實現 fmt::Display 讓 Vec 很簡單:
use std::fmt; // Import the `fmt` module.
// Define a structure named `List` containing a `Vec`.
struct List(Vec
);
impl fmt::Display for List {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
// Dereference `self` and create a reference to `vec`
// via destructuring.
let List(ref vec) = *self;
let len = vec.len(); // Save the vector length in `len`.
// Iterate over \`vec\` in \`v\` while enumerating the iteration
// count in \`count\`.
for (count, v) in vec.iter().enumerate() {
// For every element except the last, format \`write!\`
// with a comma. Use \`try!\` to return on errors.
if count < len - 1 { try!(write!(f, "{}, ", v)) }
}
// \`write!\` the last value without special formatting.
write!(f, "{}", vec\[len-1\])
}
}
fn main() {
let v = List(vec![1, 2, 3]);
println!("{}", v);
}