3个版本 (破坏性更新)
0.3.0 | 2020年9月13日 |
---|---|
0.2.0 | 2020年9月13日 |
0.1.0 | 2020年9月5日 |
#598 在 内存管理
11KB
152 行
Dybs
动态单拥有者、多借用智能指针的实验
为什么?
Rust的借用检查器通常在静态上强制执行单拥有者、多借用语义。标准库智能指针如Rc
扩展了这一点,以提供一种形式的动态借用检查,但它们这样做的同时也允许存在多个所有者,并微妙地转移了检查生命周期的责任。
在静态借用检查器的情况下,访问借用值(引用)不会失败:生命周期强制所有者必须保持值的存活时间足够长,以满足任何未解决的借用。在动态情况下,情况相反:这成为持有借用值(弱指针)的责任,以处理底层值已被所有者(们)无效化的可能性。
Dybs研究了更接近借用检查器动态行为的一个模型:值恰好保留一个所有者,该所有者可以提供对该值的运行时检查借用,并承担确保值在任何借用期间保持有效的责任。这导致所有者指针的释放可以在运行时失败,如果存在任何未解决的借用。