在Rust 编程语言中,它说的是:
移动语义
不过,这里还有一些更微妙的地方:Rust 确保对任何给定资源都只有一个绑定。例如,如果我们有一个向量,我们可以将它分配给另一个绑定:
但我发现我可以使用 gtk-rs 做到这一点:
let label1: gtk::Label = builder.get_object("label1").unwrap();
let label1_test: gtk::Label = builder.get_object("label1").unwrap();
现在两者都指向相同的资源“或发生在我身上的事情”。
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())
}
}
虽然这并不是直接来自 Rust 的东西,只是来自 gtk-rs,但我想知道我是否正确以及这有多确定。
也许它可以使用Rc
?