[Rust 筆記] format- 宏使用心得 - 彙總

假期,我嘗試使用rust做一款命令行工具,來磨礪自己的rust技術熟練度。起初,面對各式各樣的字符串格式化功能點,我傻乎乎地嘗試自己造輪子。但,實在是遇到了太多技術難點(可難死我了)。後來,通過在論壇發貼請教,我才瞭解到【標準庫 - format!語法擴展】已經90%地滿足了我的需求。至於,剩餘10%的功能,可通過實現不同的format trait來深度定製 - 達成。

於是,我修改了假期目標爲:

下面即是我對第一個目標的達成成果(除了豐富的教條總結歸納,還有30個例程) --- 掌握rust,先做 “教條俠”。第二個目標還在進行中...

依賴關係宏觀架構圖

宏調用格式


format!("以{parameter}爲佔位符的·格式化字符串·字面量", arguments...)

Formatting Argument格式

下文中的[...]結構表示

  • 一對[]之間的內容是可有可無的。

  • 而且[...]結構是可多層嵌套的。

{[argument][:format-spec]}

Formatting argument -> argument以如下三種形式引用Value Argument

Formatting argument -> format-spec以如下五種形式進一步格式化Value Argument

下文中的[...]結構表示

  • 一對[]之間的內容是可有可無的。

  • 而且[...]結構是可多層嵌套的。

  1. 先使用max-length截斷字符串

  2. 再使用mini-width對截斷後的字符串有填充與對齊處理

  3. 先 · 普通格式化Value argument

  4. 再 · 對結果字符串做 · 對齊 · 格式化處理。

  1. 先 · 普通格式化Value argument

  2. 再 · 對結果字符串做 · 對齊 · 格式化處理。

  1. 先 · 普通格式化Value argument

  2. 再 · 對結果字符串做 · 對齊 · 格式化處理。

  1. 先 · 普通格式化Value argument

  2. 再 · 對結果字符串做 · 對齊 · 格式化處理。

在 · 格式化字符串 · 字面量內,轉義錄入{}字面量

Value argument兩種語法錯誤形式

使format-spec格式化指令對自定義數據類型(的實例)起作用

技術手段就是給【自定義數據類型】實現各種Format trait,從std::fmt::Displaystd::fmt::Debugstd::fmt::Octal等等一個都別落下。[例程 30]

但是,有兩個點值得一聊:

std::fmt::Displaystd::fmt::Debug的區別

就功能來說,這兩個trait都差不多。它們之間的差別之處都集中在語義上:

結束語

這次想和大家分享的內容就是這些。

---------------------

另附上苦瓜小仔的一份思維導圖:

清晰版請參閱:https://www.yuque.com/zhoujiping/programming/pygvaf?inner=sSp4s

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/UtO6FkNAspzZF8HeMWbr7w