Esta caja fue reemplazada por el expansión de carga , que agregó soporte para todas las características que faltaban cuando comenzamos a trabajar en la carga-inspección. Gracias a todos por sus comentarios y soporte.
Solo hay dos formas de vivir tu vida.
Uno es como si nada fuera un milagro. El otro es como si todo fuera un milagro. - Albert Einstein
Necesitas Rust Nightly y rustfmt para comenzar.
Puede instalarlos a través de Rustup:
rustup install nightly
rustup component add rustfmt
¿Listo? ¡Vamos a agrietarse!
cargo install cargo-inspect
Llámalo en cualquier archivo de óxido:
cargo inspect main.rs
Si no especifica un archivo, la caja actual se analizará en su lugar.
cargo inspect
Dependiendo del tamaño de la caja, esto podría llevar un tiempo.
Por favor, sea paciente.
¡También puede comparar dos salidas de archivo! Prueba esto:
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
El óxido permite mucho azúcar sintáctico, que hace que sea un placer escribir. Sin embargo, a veces es difícil mirar detrás de la cortina y ver qué está haciendo realmente el compilador con nuestro código.
Para citar @tshepang, "Es bueno saber cuáles son estas comodidades, para evitar ser desconcertados por lo que está sucediendo debajo del capó ... cuanto menos pensamiento mágico tenemos del mundo, mejor".
Siempre me interesó cómo funcionan los lenguajes de programación en segundo plano, cómo se desactivó mi código para que el backend del compilador sea más fácil de mantener.
El objetivo es hacer que el compilador sea más accesible para los simples mortales.
¡Misterio! ¡Exploración! ¡Descubrimiento!
Lea más sobre los antecedentes de cargo-inspect en mi blog.
If-let se desugaron en matchConsidere el siguiente fragmento de código:
fn main ( ) {
if let Some ( x ) = Some ( 1 ) {
// Do something with x
}
}Cuando lo compilas, lo primero que hace Rust es Desugarlo. Para ver cómo se ve el código después de este paso, ejecute
cargo inspect examples/if_let.rs
Esto produce la siguiente salida:
Encuentre más ejemplos en la carpeta de examples . También puede contribuir más.
Las mejores cosas del mundo se ensamblan a partir de simples bloques de construcción. Esta herramienta se encuentra en los hombros de los gigantes. Para trabajar su magia, ejecuta los siguientes comandos:
rustc -Zinspect=hir , para recuperar el hir.rustfmt , para formatear la salida.prettyprint , para la iluminación de la sintaxis, que es solo un envoltorio alrededor del increíble sintecto y cajas de murciélagos. Este es un proyecto joven, que tiene desventajas y ventajas.
¡Por lo tanto, conviértete en contribuyente hoy!
A partir de ahora, esta es una herramienta muy frágil. Si falla, podría producirá una salida horrible. Te han advertido. Dicho esto, no comerá su código, por supuesto. ?
Con licencia bajo cualquiera de
a tu opción.
Avanzación diseñada por rawpixel.com