Avatar ·

Was ist der Unterschied zwischen String und str in Rust?

Hallo! Ich habe gerade angefangen, Rust zu lernen, und bin auf Verwirrung zwischen `String` und `str` gestoßen. In anderen Sprachen wie Python oder JavaScript sind Strings einfach Strings, aber hier gibt es eine ganze Menagerie. Ich habe diesen Code geschrieben: ```rust fn main() { let greeting = "Hello"; // Ist das str? let name = String::from("World"); // Und das String? println!("{} {}", greeting, name); // Habe versucht, greeting zu ändern // greeting.push_str("!"); // Fehler! // Aber name kann geändert werden name.push_str("!"); // Funktioniert println!("{}", name); } ``` Ich verstehe, dass `String` veränderbar ist, `str` aber nicht. Aber warum? Wann verwendet man welchen Typ? Und was ist `&str`? Ich habe gesehen, dass in Funktionen oft `&str` geschrieben wird, aber ich verstehe nicht, warum. Außerdem ist mir aufgefallen, dass `str` keine