Warum wird in Rust nicht empfohlen, &String, &Vec oder &Box als Funktionsargumente zu verwenden?
Hallo zusammen! Ich habe vor kurzem angefangen, Rust zu lernen, und mir ist eine seltsame Sache aufgefallen. In einigen Codebeispielen sehe ich, dass Funktionen Parameter wie `&String`, `&Vec` oder `&Box` akzeptieren. Das erscheint logisch – wir wollen eine Referenz übergeben, um Daten nicht zu kopieren. Aber dann bin ich auf die Empfehlung gestoßen, dass man das nicht tun sollte. Warum? Es sind doch nur Referenzen!
Hier ist ein Beispiel, das ich geschrieben habe:
```rust
fn print_string(s: &String) {
println!("{}", s);
}
fn print_vec(v: &Vec) {
for i in v {
println!("{}", i);
}
}
fn main() {
let my_string = String::from("Hello");
let my_vec = vec![1, 2, 3];
print_string(&my_string);
print_vec(&my_vec);
}
```
Dieser Code funktioniert, aber ich habe gehört, dass es besser ist, `&str` anstelle von `&String` und `&[T]` anstelle von `&Vec` zu verwenden.