1 个不稳定版本

使用旧的 Rust 2015

0.1.2 2018年6月11日
0.1.1 2018年6月11日
0.1.0 2018年6月11日

#13#weak

MIT/Apache

110KB
1.5K SLoC

drc

Rust 库,引入了 Drc 智能指针及其对应的 Weak 类型。

文档

用法

将以下内容添加到您的 Cargo.toml

[dependencies]
drc = "0.1"

然后将其添加到您的 crate 根目录

extern crate drc;

lib.rs:

此小型库提供了 DrcWeak 类型。'Drc' 代表 'Dynamically Reference Counted',是用于与存储在其中的数据交互的主要类型。它的行为与 Rc 相同,但可以转换为 Arc,后者可以在线程间安全传递,然后再转换回 Drc。这可以防止在单个线程上工作时执行不必要的原子操作,同时不会将数据限制在线程内。

技术细节

基本上,当 Arc 转换为 Drc 时,它实际上被保留在堆上位于数据结构中的内存中。这里还保留了一个“本地”的强引用计数和弱引用计数。如果本地强引用计数为零,则存储的 Arc 将被丢弃,但在任何其他正数值下,Arc 都将被保留。这意味着在一个线程中,Drc 可以无限克隆和传递而无需执行任何原子操作,直到最后一个 Drc 被丢弃。

DrcWeak 函数功能类似,但比 ArcWeakRcWeak 稍微复杂。本质上,即使 Drc 的局部强引用计数达到零,尽管 Arc 将被丢弃,但如果存在另一个 Arc 或一组 Drc,则可以通过升级一个 Weak Drc 来创建一个新的 Drc

Drc::new 是一个方便的方法,用于创建 Arc 并将其放入其中。它的工作方式与使用 fromArc 完全相同。

无运行时依赖