Avatar ·

Wie implementiert man Copy und Clone für eine Struktur mit einem String-Feld (oder einem beliebigen Nicht-Copy-Typ)?

Hallo zusammen! Ich habe gerade angefangen, Rust zu lernen, und bin auf ein Problem gestoßen, das ich seit zwei Tagen nicht lösen kann. Ich schreibe ein einfaches Programm zur Arbeit mit Benutzern und habe folgende Struktur: ```rust struct User { id: u32, name: String, email: String, } ``` Ich möchte, dass diese Struktur kopiert und an Funktionen ohne Ausleihe übergeben werden kann – das heißt, ich möchte die Traits `Copy` und `Clone` dafür implementieren. Aber der Compiler meckert, wenn ich `#[derive(Copy, Clone)]` schreibe: ``` error[E0204]: the trait `Copy` may not be implemented for this type --> src/main.rs:1:10 | 1 | #[derive(Copy, Clone)] | ^^^^ 2 | struct User { 3 | name: String, | ---- this field does not implement `Copy` ``` Ich verstehe, dass `String` `Copy` nicht implementiert, weil es ein Typ mit dynamischer Speicherzuweisung ist. Aber wie kann ich dann erreichen, dass die Struktur kopiert werden kann? In C++ würde ich einfach einen Kopierkonstruktor schreiben, aber hier ist es komplizierter. Ich muss schreiben