如果对象已解构,是否可能有一个短期的Rust ref返回None?
能给我一些像这样的东西吗如果对象已解构,是否可能有一个短期的Rust ref返回None?,rust,Rust,能给我一些像这样的东西吗 struct LongLivedStruct { // lasts for a long time possibleRef: ShortLivedRc<SomeTrait> // SomeTrait will be freed soon } 如果它不存在,它会惊慌失措吗?在我看来,你可以通过引用来做到这一点 通过使用SomeTrait对象调用Rc并将其存储在LongLivedStruct中,您可以创建一个弱引用来存储在LongLivedStruct
struct LongLivedStruct { // lasts for a long time
possibleRef: ShortLivedRc<SomeTrait> // SomeTrait will be freed soon
}
如果它不存在,它会惊慌失措吗?在我看来,你可以通过引用来做到这一点 通过使用
SomeTrait
对象调用Rc
并将其存储在LongLivedStruct
中,您可以创建一个弱引用来存储在LongLivedStruct
中
然后,您可以通过调用它以获取一个选项
返回来获取它
impl LongLivedStruct {
fn try_to_do_something(&self) -> &str {
match &self.possibleRef.try_deref() {
Ok(_) => "Value still exists, we can do something with it!"
Err(_) => "Value has already been deconstructed"
}
}
}