8 个版本

0.5.5 2024年5月4日
0.5.4 2024年3月26日
0.5.2 2023年6月4日
0.5.0 2023年5月27日
0.3.1 2023年5月3日

#402数据结构


用于 duplink

MIT/Apache

63KB
2K SLoC

compact-rc

低内存引用计数指针。

此包中的类型几乎具有与标准 RcArc 相同的方法。与标准类型的区别如下

  • 不支持弱引用。
  • 可以使用小整数作为引用计数。
强计数 弱计数
std usize usize
compact-rc u8, u16, u32, u64, usize 不支持

示例

use compact_rc::Rc8;

fn main() {
    // rc1 is a pointer containing i8 value with u8 refcount.
    let rc1: Rc8<i8> = Rc8::new(100);

    assert_eq!(Rc8::strong_count(&rc1), 1);
    assert_eq!(*rc1, 100);

    // Increment the refcount.
    // The value is shared by rc1 and rc2.
    let rc2 = rc1.clone();

    assert_eq!(Rc8::strong_count(&rc1), 2);
    assert_eq!(Rc8::strong_count(&rc2), 2);
    assert_eq!(*rc1, 100);
    assert_eq!(*rc2, 100);
    assert!(Rc8::ptr_eq(&rc1, &rc2));
}

无运行时依赖