Strings hin und her

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, wie wir in Rust zwischen anderen Typen und Strings umwandeln. Um einen beliebigen Typ in einen String umzuwandeln, können wir das ToString-Attribut für diesen Typ implementieren. Alternativ können wir das fmt::Display-Attribut implementieren, das automatisch das ToString-Attribut bereitstellt und uns erlaubt, den Typ mit println! auszugeben. Um einen String in einen bestimmten Typ, wie eine Zahl, zu analysieren, können wir die parse-Funktion zusammen mit Typinferenz verwenden oder den Typ mithilfe der 'Turbofish'-Syntax angeben. Dies beruht auf dem FromStr-Attribut, das für viele Typen in der Standardbibliothek implementiert ist. Wenn wir einen String in einen benutzerdefinierten Typ analysieren möchten, können wir das FromStr-Attribut für diesen Typ implementieren.

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/AdvancedTopicsGroup(["Advanced Topics"]) rust(("Rust")) -.-> rust/BasicConceptsGroup(["Basic Concepts"]) rust(("Rust")) -.-> rust/DataTypesGroup(["Data Types"]) rust/BasicConceptsGroup -.-> rust/variable_declarations("Variable Declarations") rust/DataTypesGroup -.-> rust/integer_types("Integer Types") rust/DataTypesGroup -.-> rust/string_type("String Type") rust/FunctionsandClosuresGroup -.-> rust/function_syntax("Function Syntax") rust/FunctionsandClosuresGroup -.-> rust/expressions_statements("Expressions and Statements") rust/DataStructuresandEnumsGroup -.-> rust/method_syntax("Method Syntax") rust/AdvancedTopicsGroup -.-> rust/traits("Traits") subgraph Lab Skills rust/variable_declarations -.-> lab-99301{{"Strings hin und her"}} rust/integer_types -.-> lab-99301{{"Strings hin und her"}} rust/string_type -.-> lab-99301{{"Strings hin und her"}} rust/function_syntax -.-> lab-99301{{"Strings hin und her"}} rust/expressions_statements -.-> lab-99301{{"Strings hin und her"}} rust/method_syntax -.-> lab-99301{{"Strings hin und her"}} rust/traits -.-> lab-99301{{"Strings hin und her"}} end

Strings hin und her

Umwandlung in einen String

Um einen beliebigen Typ in einen String umzuwandeln, ist es so einfach wie das Implementieren des [ToString]-Attributs für den Typ. Anstatt dies direkt zu tun, sollten Sie das fmt::Display-Attribut implementieren, das automatisch [ToString] bereitstellt und auch das Ausgeben des Typs wie im Abschnitt zu print! beschrieben ermöglicht.

use std::fmt;

struct Circle {
    radius: i32
}

impl fmt::Display for Circle {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        write!(f, "Circle of radius {}", self.radius)
    }
}

fn main() {
    let circle = Circle { radius: 6 };
    println!("{}", circle.to_string());
}

Analysieren eines Strings

Einer der häufigeren Typen, in den ein String umgewandelt wird, ist eine Zahl. Der übliche Ansatz hierfür ist, die [parse]-Funktion zu verwenden und entweder auf Typinferenz zu setzen oder den zu parsenden Typ mithilfe der 'Turbofish'-Syntax anzugeben. Beide Alternativen werden im folgenden Beispiel gezeigt.

Dies wird den String in den angegebenen Typ umwandeln, solange das [FromStr]-Attribut für diesen Typ implementiert ist. Dies ist für zahlreiche Typen in der Standardbibliothek implementiert. Um diese Funktionalität für einen benutzerdefinierten Typ zu erhalten, implementieren Sie einfach das [FromStr]-Attribut für diesen Typ.

fn main() {
    let parsed: i32 = "5".parse().unwrap();
    let turbo_parsed = "10".parse::<i32>().unwrap();

    let sum = parsed + turbo_parsed;
    println!("Sum: {:?}", sum);
}

Zusammenfassung

Herzlichen Glückwunsch! Sie haben das Lab "Strings hin und her" abgeschlossen. Sie können in LabEx weitere Labs absolvieren, um Ihre Fähigkeiten zu verbessern.