Cette caisse a été remplacée par l'expansion de la cargaison , ce qui a ajouté le support pour toutes les fonctionnalités qui manquaient lorsque nous avons commencé à travailler sur l'inspect de la cargaison. Merci à tous pour vos commentaires et votre soutien.
Il n'y a que deux façons de vivre votre vie.
L'une est comme si rien n'était un miracle. L'autre est comme si tout était un miracle. - Albert Einstein
Vous avez besoin de rouille tous les soirs et rustfmt pour commencer.
Vous pouvez les installer via rustup:
rustup install nightly
rustup component add rustfmt
Tout set? Allons craquer!
cargo install cargo-inspect
Appelez-le sur n'importe quel fichier de rouille:
cargo inspect main.rs
Si vous ne spécifiez pas de fichier, la caisse actuelle sera analysée à la place.
cargo inspect
Selon la taille de la caisse, cela pourrait prendre un certain temps.
Soyez patient.
Il peut également comparer deux sorties de fichiers! Essayez ceci:
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
La rouille permet beaucoup de sucre syntaxique, ce qui en fait un plaisir d'écrire. Il est parfois difficile, cependant, de regarder derrière le rideau et de voir ce que le compilateur fait vraiment avec notre code.
Pour citer @tshepang, "Il est bon de savoir quelles sont ces commodités, pour éviter d'être mystifiées par ce qui se passe sous le capot ... la pensée moins magique que nous avons du monde, mieux c'est."
J'ai toujours été intéressé par la façon dont les langages de programmation fonctionnent en arrière-plan, comment mon code était déroulé pour rendre le backend du compilateur plus facile à maintenir.
L'objectif est de rendre le compilateur plus accessible pour les simples mortels.
Mystère! Exploration! Découverte!
En savoir plus sur le contexte de cargo-inspect sur mon blog.
If-let se fait desgrer dans matchConsidérez l'extrait de code suivant:
fn main ( ) {
if let Some ( x ) = Some ( 1 ) {
// Do something with x
}
}Lorsque vous le compilez, la première chose que la rouille fait est le desugar. Pour voir à quoi ressemble le code après cette étape, exécutez
cargo inspect examples/if_let.rs
Cela produit la sortie suivante:
Veuillez trouver plus d'exemples dans le dossier examples . Vous pouvez également contribuer davantage.
Les meilleures choses du monde sont assemblées à partir de blocs de construction simples. Cet outil se tient sur les épaules des géants. Pour travailler sa magie, il exécute les commandes suivantes:
rustc -Zinspect=hir , pour récupérer le Hir.rustfmt , pour la mise en forme de la sortie.prettyprint , pour la syntaxe-highlighting, qui est juste un wrapper autour des caisses impressionnantes de synthèse et de chauve-souris. Il s'agit d'un jeune projet, qui a des inconvénients et des avantages.
Ainsi, devenez un contributeur aujourd'hui!
Pour l'instant, il s'agit d'un outil très fragile. Si ça échoue, il pourrait produira une sortie horrible. Vous avez été averti. Cela dit, il ne mangera pas votre code, bien sûr. ?
Sous licence sous l'un ou l'autre des
à votre option.
Gagnifuling llower conçu par RawPixel.com