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