Ich habe eine struct ein veränderliches Referenz enthält (MyStruct2
), die ich klonen müssen, so abgeleitete ich die Clone
Methode für das struct:Wie struct mit einem veränderlichen Referenz klonen
#[derive(Clone)]
struct MyStruct {
val: usize,
}
#[derive(Clone)]
struct MyStruct2<'a> {
struct_reference: &'a mut MyStruct
}
Wenn jedoch I kompilieren Diesen Code bekomme ich folgende Fehlermeldung:
src/main.rs:419:3: 419:37 error: the trait `core::clone::Clone` is not implemented for the type `&mut MyStruct` [E0277]
src/main.rs:419 struct_reference: &'a mut MyStruct
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/main.rs:417:11: 417:16 note: in this expansion of #[derive_Clone] (defined in src/main.rs)
src/main.rs:419:3: 419:37 help: run `rustc --explain E0277` to see a detailed explanation
src/main.rs:419:3: 419:37 help: the following implementations were found:
src/main.rs:419:3: 419:37 help: <MyStruct as core::clone::Clone>
src/main.rs:419:3: 419:37 note: required by `core::clone::Clone::clone`
error: aborting due to previous error
Wenn ich die Referenz unveränderlich mache, dann kompiliert der Code.
#[derive(Clone)]
struct MyStruct {
val: usize,
}
#[derive(Clone)]
struct MyStruct2<'a> {
struct_reference: &'a MyStruct
}
Es scheint, dass, obwohl Klon für die MyStruct
Struktur abgeleitet ist, ist es nicht für einen veränderbaren Bezug auf MyStruct
abgeleitet wird.
Gibt es eine Möglichkeit, einen veränderbaren Verweis auf eine Struktur zu klonen und eine Struktur zu klonen, die eine veränderbare Referenz enthält?
Ich würde vorschlagen, dass Sie [* The Rust Programmiersprache * Kapitel über Referenzen] lesen (https://doc.rust-lang.org/stable/book/references-and-borrowing.html#the-rules). Es ist * entscheidend * wichtig, dass Sie die Einschränkung für veränderbares Aliasing verstehen. – Shepmaster