cargo inspect
1.0.0
該板條箱由貨物銷售升級,這為我們開始在貨物檢查時所缺少的所有功能提供了支持。感謝所有人的反饋和支持。
只有兩種方法可以生活。
一個好像沒有什麼是奇蹟。另一個似乎一切都是奇蹟。 - 阿爾伯特·愛因斯坦
您需要每晚生鏽和rustfmt才能開始。
您可以通過Rustup安裝它們:
rustup install nightly
rustup component add rustfmt
全部設置?讓我們開始破解!
cargo install cargo-inspect
在任何生鏽文件上稱呼它:
cargo inspect main.rs
如果您不指定文件,則將分析當前的板條箱。
cargo inspect
根據板條箱的大小,這可能需要一段時間。
請耐心等待。
它還可以比較兩個文件輸出!嘗試以下操作:
cargo inspect --diff examples/range.rs,examples/range_inclusive.rs --plain
USAGE:
cargo inspect [FLAGS] [OPTIONS] [INPUT_FILE]
FLAGS:
-h, --help
Prints help information
--list-themes
Should we list all pretty printer themes?
--plain
Don't highlight output
-V, --version
Prints version information
-v, --verbose
Print the original code as a comment above the desugared code
OPTIONS:
--theme <THEME>
Specify a theme override for the pretty printer
--diff <files>
Diff input files
--format <format>
Override for the format that gets outputted when the `unpretty` mode is set to `flowgraph` [default: svg]
--unpretty <unpretty>
rustc "unpretty" parameters
*Note*: For `--unpretty=flowgraph=[symbol]` you need to have `dot` on your PATH. [default: hir]
ARGS:
<INPUT_FILE>
Input file
Rust允許大量的句法糖,這使得寫作很高興。但是,有時很難看窗簾後面,看看編譯器對我們的代碼的真正作用。
引用@tshepang的話說:“很高興知道這些便利是什麼,避免被引擎蓋下發生的事情感到迷惑……我們對世界的魔力越小,越好。”
我一直對編程語言在後台工作,如何展開我的代碼以使編譯器後端更易於維護。
目的是使編譯器更容易成為凡人。
神秘!勘探!發現!
在我的博客上閱讀cargo-inspect的背景的更多信息。
If-let被刪除參加match考慮以下代碼段:
fn main ( ) {
if let Some ( x ) = Some ( 1 ) {
// Do something with x
}
}當您編譯它時,Rust所做的第一件事就是Desugar。要查看此步驟之後的代碼的樣子,請運行
cargo inspect examples/if_let.rs
這會產生以下輸出:
請在examples文件夾中找到更多示例。您也可以做出更多貢獻。
世界上最好的事情是由簡單的構建塊組裝而成的。該工具站在巨人的肩膀上。為了發揮其魔力,它運行以下命令:
rustc -Zinspect=hir ,用於檢索Hir。rustfmt ,用於格式化輸出。prettyprint ,用於語法高光,這只是圍繞令人敬畏的語法和蝙蝠板條箱的包裝。 這是一個年輕的項目,它具有不利影響和優勢。
因此,成為今天的貢獻者!
截至目前,這是一個非常脆弱的工具。如果失敗,可能將產生可怕的輸出。您已經被警告。也就是說,當然不會吃您的代碼。 ?
根據任何一個
可以選擇。
由RawPixel.com設計的放大鏡