Rust Literale und Typspezifikation

RustRustBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen wir über Literale in Rust und wie wir ihren Typ durch Hinzufügen eines Suffixes angeben können. Suffixed Literale haben ihren Typ bei der Initialisierung bekannt, während der Typ von unsuffixed Literalen von der Verwendung abhängt. Die size_of_val-Funktion wird verwendet, um die Größe einer Variable in Bytes zu bestimmen, und sie wird mit ihrem vollständigen Pfad std::mem::size_of_val aufgerufen. Die size_of_val-Funktion ist in das mem-Modul definiert, das wiederum im std-Kasten definiert ist.

Hinweis: Wenn das Lab keinen Dateinamen angibt, können Sie einen beliebigen Dateinamen verwenden. Beispielsweise können Sie main.rs verwenden und es mit rustc main.rs &&./main kompilieren und ausführen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL rust(("Rust")) -.-> rust/FunctionsandClosuresGroup(["Functions and Closures"]) rust(("Rust")) -.-> rust/DataStructuresandEnumsGroup(["Data Structures and Enums"]) rust(("Rust")) -.-> rust/BasicConceptsGroup(["Basic Concepts"]) rust/BasicConceptsGroup -.-> rust/variable_declarations("Variable Declarations") rust/FunctionsandClosuresGroup -.-> rust/function_syntax("Function Syntax") rust/FunctionsandClosuresGroup -.-> rust/expressions_statements("Expressions and Statements") rust/DataStructuresandEnumsGroup -.-> rust/method_syntax("Method Syntax") subgraph Lab Skills rust/variable_declarations -.-> lab-99296{{"Rust Literale und Typspezifikation"}} rust/function_syntax -.-> lab-99296{{"Rust Literale und Typspezifikation"}} rust/expressions_statements -.-> lab-99296{{"Rust Literale und Typspezifikation"}} rust/method_syntax -.-> lab-99296{{"Rust Literale und Typspezifikation"}} end

Literale

Numerische Literale können durch Hinzufügen des Typs als Suffix typannotiert werden. Als Beispiel, um anzugeben, dass das Literal 42 den Typ i32 haben soll, schreiben Sie 42i32.

Der Typ von unsuffixed numerischen Literalen hängt davon ab, wie sie verwendet werden. Wenn keine Einschränkung besteht, verwendet der Compiler i32 für Ganzzahlen und f64 für Gleitkommazahlen.

fn main() {
    // Suffixed Literale, ihre Typen sind bei der Initialisierung bekannt
    let x = 1u8;
    let y = 2u32;
    let z = 3f32;

    // Unsuffixed Literale, ihre Typen hängen davon ab, wie sie verwendet werden
    let i = 1;
    let f = 1.0;

    // `size_of_val` gibt die Größe einer Variable in Bytes zurück
    println!("Größe von `x` in Bytes: {}", std::mem::size_of_val(&x));
    println!("Größe von `y` in Bytes: {}", std::mem::size_of_val(&y));
    println!("Größe von `z` in Bytes: {}", std::mem::size_of_val(&z));
    println!("Größe von `i` in Bytes: {}", std::mem::size_of_val(&i));
    println!("Größe von `f` in Bytes: {}", std::mem::size_of_val(&f));
}

Es gibt einige Konzepte im vorherigen Code, die noch nicht erklärt wurden. Hier ist eine kurze Erklärung für die ungeduldigen Leser:

  • std::mem::size_of_val ist eine Funktion, aber mit ihrem vollen Pfad aufgerufen. Code kann in logische Einheiten namens Module aufgeteilt werden. In diesem Fall ist die size_of_val-Funktion im mem-Modul definiert, und das mem-Modul ist im std-Kasten definiert. Weitere Details finden Sie unter Modulen und Kasten.

Zusammenfassung

Herzlichen Glückwunsch! Sie haben das Literale-Lab abgeschlossen. Sie können in LabEx weitere Labs absolvieren, um Ihre Fähigkeiten zu verbessern.