In Rust: Was ist der Unterschied zwischen clone() und to_owned() und wann verwendet man was?
Hallo Kollegen! Ich habe vor kurzem angefangen, Rust zu lernen, und verwechsle ständig die Methoden clone() und to_owned(). Anscheinend erstellen beide eine Kopie der Daten, aber in der Dokumentation steht, dass es sich um verschiedene Dinge handelt. In der Praxis sehe ich, dass clone() für jeden Typ aufgerufen werden kann, der das Clone-Trait implementiert, und to_owned() nur für Typen mit dem ToOwned-Trait. Aber ist das nicht dasselbe?\n\nHier ist ein konkretes Beispiel, das mich verwirrt:\n\n```rust\nlet s: &str = "hello";\nlet a: String = s.to_owned();\nlet b: String = s.to_string(); // funktioniert auch\n// Aber warum kann ich nicht s.clone() schreiben, um einen String zu erhalten?\n// Denn clone() gibt &str zurück, nicht String!\n```\n\nEin weiteres Beispiel: Ich arbeite mit Slices. Ich habe &[i32] und möchte Vec erhalten. Ich kann slice.to_owned() machen – das funktioniert. Aber wenn ich slice
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen