rust 如何判断两个内存对象之间的生存期关系?

oyxsuwqo  于 2022-11-30  发布在  其他
关注(0)|答案(2)|浏览(139)

我有两个复杂对象,它们之间有某种形式的生存期关系。我的目标是消除这种关系,使两个对象完全独立。
有没有一种快速的方法来判断是什么导致了对象之间的生存期关系?

cwtwac6a

cwtwac6a1#

很简单:一个有对另一个的引用。除非涉及到引用,否则生存期并不真正(重要地)涉及到它。如果它们涉及到引用,那么它们的生存期是相关的。如果它们都以某种方式引用同一个第三个对象,它们可能是间接相关的,但这可能不是你的意思。
这与C/C中的情况没有什么不同,在C/C中,如果你有一个指向另一个对象的指针,那么它们的生存期是相关的。只是在Rust中,编译器强制你正确地做这件事(除非你使用unsafe,它被称为unsafe是有原因的)。

nlejzf6q

nlejzf6q2#

使用借位检查器。Rust编译器有一个借位检查器,它比较作用域来确定是否所有的借位都是有效的。它将显示其他变量的生存期。
更多信息,请访问:https://doc.rust-lang.org/book/ch10-03-lifetime-syntax.html

相关问题