如果对象已解构,是否可能有一个短期的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"
        }
    }
}