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作爲輸出參數
Rust顯示
Rust 顯示/Display
fmt::Debug
難以看起來緊湊和清潔,因此它通常是有利的定製的輸出的外觀。 這是通過 [fmt::Display](http://doc.rust-lang.org/std/fmt/)
使用 {}
打印標記手動執行完成。實現它看起來像這樣:
// Import (via `use`) the `fmt` module to make it available.
use std::fmt;
// Define a structure which `fmt::Display` will be implemented for. This is simply
// a tuple struct containing an `i32` bound to the name `Structure`.
struct Structure(i32);
// In order to use the `{}` marker, the trait `fmt::Display` must be implemented
// manually for the type.
impl fmt::Display for Structure {
// This trait requires `fmt` with this exact signature.
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
// Write strictly the first element into the supplied output
// stream: `f`. Returns `fmt::Result` which indicates whether the
// operation succeeded or failed. Note that `write!` uses syntax which
// is very similar to `println!`.
write!(f, "{}", self.0)
}
}
fmt::Display
可以比 fmt::Debug
更乾淨,但是這給 std
庫帶來的一個問題。 應該如何將不明確類型顯示?例如,如果 std
庫爲所有Vec<T>
實現一個單一的風格,那麼它應該是什麼風格?這兩種還是一種?
-
Vec<path>
:/:/etc:/home/username:/bin
(使用:
分隔) -
Vec<number>
:1,2,3
(使用:
分隔)
沒有,因爲沒有理想的風格爲所有類型使用,std 庫並不自己支配。fmt::Display 沒有爲Vec
因爲任何新的容器類型的一個問題是不能通用, 但 fmt::Display 可以實現。