Zeichenketten verknüpfen

Rust:
Zeichenketten verknüpfen

How to:

Verkettung mit +:

fn main() {
    let gruss = "Hallo".to_string();
    let welt = "Welt!";
    let kompletter_gruss = gruss + " " + welt;
    println!("{}", kompletter_gruss);
}

Ausgabe:

Hallo Welt!

Mit format! Makro:

fn main() {
    let tier = "Fuchs";
    let laut = "schnell";
    let satz = format!("Der {} ist {}", tier, laut);
    println!("{}", satz);
}

Ausgabe:

Der Fuchs ist schnell

Deep Dive

Stringverkettung gibt’s, seit es Programmiersprachen gibt. In Rust gibt es mehrere Wege, Strings zu verketten, weil es verschiedene Anwendungsfälle gibt. + nimmt den Besitz des ersten Strings und hängt die weiteren Strings hinten an. Es ist schnell, aber wenig flexibel. format!, ein Makro, ist flexibler und erlaubt es, komplexe Textmuster zu erstellen, kann aber langsamer sein, insbesondere bei großen Datenmengen.

Interner Ablauf: + verwendet unter der Haube die add Methode, die wiederum push_str nutzt, um den String zu erweitern. Rust benötigt für den ersten String Besitzrechte, da es dessen interne Darstellung direkt verändert. Die Flexibilität von format! resultiert aus der Tatsache, dass es unter der Haube mit einem Formatter arbeitet, der temporäre Puffer für die Textdaten verwendet.

See Also