Esta caixa foi substituída pela carga de carga , que adicionou suporte para todos os recursos que estavam faltando quando começamos a trabalhar em cargas inspecionadas. Obrigado a todos pelo seu feedback e suporte.
Existem apenas duas maneiras de viver sua vida.
Um é como se nada fosse um milagre. O outro é como se tudo fosse um milagre. - Albert Einstein
Você precisa de ferrugem todas as noites e rustfmt para começar.
Você pode instalá -los via Rustup:
rustup install nightly
rustup component add rustfmt
Tudo o conjunto? Vamos fazer rachaduras!
cargo install cargo-inspect
Chame em qualquer arquivo de ferrugem:
cargo inspect main.rs
Se você não especificar um arquivo, a caixa atual será analisada.
cargo inspect
Dependendo do tamanho da caixa, isso pode demorar um pouco.
Por favor, seja paciente.
Também pode comparar duas saídas de arquivo! Experimente o seguinte:
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
A ferrugem permite muito açúcar sintático, o que torna um prazer escrever. Às vezes, é difícil, no entanto, olhar para trás da cortina e ver o que o compilador está realmente fazendo com o nosso código.
Para citar @tshepang: "É bom saber quais são essas conveniências, para evitar ficar confuso com o que está acontecendo sob o capô ... o pensamento menos mágico que temos do mundo, melhor".
Eu sempre estava interessado em como as linguagens de programação funcionam em segundo plano, como meu código estava desenrolado para facilitar a manutenção do back -end do compilador.
O objetivo é tornar o compilador mais acessível para meros mortais.
Mistério! Exploração! Descoberta!
Leia mais sobre o pano de fundo do cargo-inspect no meu blog.
If-let for dessugarado na matchConsidere o seguinte snippet de código:
fn main ( ) {
if let Some ( x ) = Some ( 1 ) {
// Do something with x
}
}Quando você o compila, a primeira coisa que Rust faz é desugar. Para ver como é o código após esta etapa, execute
cargo inspect examples/if_let.rs
Isso produz a seguinte saída:
Encontre mais exemplos na pasta examples . Você também pode contribuir mais.
As melhores coisas do mundo são montadas a partir de simples blocos de construção. Esta ferramenta fica sobre os ombros dos gigantes. Para trabalhar sua mágica, ele executa os seguintes comandos:
rustc -Zinspect=hir , para recuperar o hir.rustfmt , para formatar a saída.prettyprint , para a Syntax-Highlighting, que é apenas um invólucro em torno das incríveis sintectas e caixas de morcego. Este é um projeto jovem, que tem desvantagens e vantagens.
Assim, torne -se um colaborador hoje!
A partir de agora, essa é uma ferramenta muito frágil. Se falhar, é poder produzirá uma produção horrível. Você foi avisado. Dito isto, não comerá seu código, é claro. ?
Licenciado sob qualquer um de
por sua opção.
Lupa, projetada por RawPixel.com