In The Rust Programming Language, sagt es so etwas wie:Wie sicher ist dieses Verhalten von GTK-rs Builder :: get_object?
Verschieben Semantik
Es gibt etwas mehr Subtilität hier, obwohl: Rost sorgt dafür, dass genau eine zu jeder gegebenen Ressource ist es verbindlich. Zum Beispiel, wenn wir einen Vektor haben, können wir es auf eine andere Bindung zuweisen:
Aber ich fand, dass ich das gtk-rs verwenden können:
let label1: gtk::Label = builder.get_object("label1").unwrap();
let label1_test: gtk::Label = builder.get_object("label1").unwrap();
Beide nun auf den gleichen Punkt Ressource "oder etwas passiert mir."
Builder::get_object
wie folgt definiert ist:
pub fn get_object<T: IsA<Object>>(&self, name: &str) -> Option<T> {
unsafe {
Option::<Object>::from_glib_none(
ffi::gtk_builder_get_object(self.to_glib_none().0, name.to_glib_none().0))
.and_then(|obj| obj.downcast().ok())
}
}
Obwohl diese direkt etwas von Rust nicht wirklich ist, nur von gtk-rs, ich frage mich, ob ich recht habe und wie sicher ist dies.
Vielleicht könnte es Rc
verwenden?
IIRC Die glib-Objekte selbst sind bereits als Referenz gezählt, so dass keine weitere Schicht Rc darüber hinzugefügt werden muss. – kennytm
@kennytm Vielen Dank für Ihren Kommentar. –