Этот ящик был заменен грузом-эксплу , которая добавила поддержку всех функций, которые отсутствовали, когда мы начали работать над недостатком груза. Спасибо всем за ваши отзывы и поддержка.
Есть только два способа жить своей жизнью.
Один, как будто ничто не является чудом. Другой, как будто все это чудо. - Альберт Эйнштейн
Вам нужна ржавчина ночью и 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