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
63KB
2K SLoC
compact-rc
低内存引用计数指针。
此包中的类型几乎具有与标准 Rc
和 Arc
相同的方法。与标准类型的区别如下
- 不支持弱引用。
- 可以使用小整数作为引用计数。
包 | 强计数 | 弱计数 |
---|---|---|
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));
}