1
Code:Wie Debuggen zu Struktur mit `RefCell <Vec <Weak<Gadget> >>` Feldtyp implementieren?
struct Owner {
name: String,
gadgets: RefCell<Vec<Weak<Gadget>>>,
}
//code omitted
impl fmt::Debug for Owner {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "Owner {{ name: {}, gadgets: {:?} }}", self.name, self.gadgets.into_inner())
}
}
fn main() {
let gadget_owner : Rc<Owner> = Rc::new(Owner { /**/ });
let gadget1 = gadget_owner.make_gadget(1);
println!("gadget1 is: {:?}", gadget1);
}
bringen Fehler:
error: cannot move out of borrowed content [E0507]
src/main.rs:25 write!(f, "Owner {{ name: {}, gadgets: {:?} }}", self.name, self.gadgets.into_inner())
^~~~
Anstatt einen nutzlosen Füllstoff Hinzufügen, warum uns nicht sagen, was Sie nicht verstehen? Verstehst du, was Eigentum und Kreditaufnahme sind? Hast du das Rust Book gelesen? Haben Sie die Dokumentation über ['RefCell :: in_inner'] (https://doc.rust-lang.org/std/cell/struct.RefCell.html#method.into_inner) gelesen? –
@MatthieuM. Ja, jetzt sehe ich, ich muss es mir zuerst ausleihen, denn in_inner() zerstöre RefCell – bjornmelgaard
Genau, und du darfst die 'RefCell' nicht zerstören, weil du sie nur ausleihst. By the way, wenn Sie Ihr Problem gelöst haben, möchten Sie vielleicht selbst antworten :) –