Diese Kiste wurde von Cargo-Expand beaufsichtigt , was die Unterstützung für alle Funktionen fehlte, die fehlten, als wir anfingen, an Frachtunspektionen zu arbeiten. Vielen Dank für Ihr Feedback und Ihre Unterstützung.
Es gibt nur zwei Möglichkeiten, Ihr Leben zu leben.
Einer ist, als ob nichts ein Wunder ist. Der andere ist, als wäre alles ein Wunder. - Albert Einstein
Sie brauchen abends Rost und rustfmt um loszulegen.
Sie können diese über Rustup installieren:
rustup install nightly
rustup component add rustfmt
Alles festgelegt? Lass uns knacken!
cargo install cargo-inspect
Rufen Sie es in einer Rost -Datei an:
cargo inspect main.rs
Wenn Sie keine Datei angeben, wird stattdessen die aktuelle Kiste analysiert.
cargo inspect
Abhängig von der Größe der Kiste kann dies eine Weile dauern.
Bitte sei geduldig.
Es kann auch zwei Dateiausgänge vergleichen! Versuchen Sie das:
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
Rost ermöglicht viel syntaktischen Zucker, das es zu einem Vergnügen macht, zu schreiben. Es ist jedoch manchmal schwer, hinter den Vorhang zu schauen und zu sehen, was der Compiler wirklich mit unserem Code macht.
Um @TShepang zu zitieren: "Es ist gut zu wissen, was diese Annehmlichkeiten sind, um zu vermeiden, dass das unter der Haube vorgeht ... Das weniger magische Denken, das wir über die Welt haben, desto besser."
Ich war immer daran interessiert, wie Programmiersprachen im Hintergrund funktionieren, wie mein Code abgerollt wurde, um den Compiler -Backend zu erleichtern.
Ziel ist es, den Compiler für bloße Sterbliche zugänglicher zu machen.
Geheimnis! Erforschung! Entdeckung!
Lesen Sie mehr über den Hintergrund von cargo-inspect in meinem Blog.
If-let in match eingeleitet wirdBetrachten Sie den folgenden Code -Snippet:
fn main ( ) {
if let Some ( x ) = Some ( 1 ) {
// Do something with x
}
}Wenn Sie es kompilieren, ist das erste, was Rost tut, es mit Desugar. Um zu sehen, wie der Code nach diesem Schritt aussieht, laufen Sie aus
cargo inspect examples/if_let.rs
Dies erzeugt die folgende Ausgabe:
Weitere Beispiele finden Sie im examples -Ordner. Sie können auch mehr beitragen.
Die besten Dinge der Welt stammen aus einfachen Bausteinen. Dieses Tool steht auf den Schultern der Riesen. Um seine Magie zu bearbeiten, führt es die folgenden Befehle aus:
rustc -Zinspect=hir , zum Abrufen des Hirs.rustfmt zur Formatierung der Ausgabe.prettyprint , für Syntax-Highlighting, die nur ein Wrapper um die fantastischen Syntekt- und Fledermauskisten ist. Dies ist ein junges Projekt, das Nachteile und Vorräte hat.
Machen Sie heute heute ein Mitwirkender!
Ab sofort ist dies ein sehr zerbrechliches Werkzeug. Wenn es fehlschlägt, ist es könnte wird schreckliche Ausgabe erzeugen. Sie wurden gewarnt. Das heißt, es wird natürlich Ihren Code natürlich nicht essen. ?
Lizenziert unter einem von
nach Ihrer Option.
Lupenglas entworfen von rawpixel.com