3 个版本
0.2.2 | 2021 年 3 月 17 日 |
---|---|
0.2.1 | 2021 年 2 月 1 日 |
0.2.0 | 2021 年 2 月 1 日 |
#2638 在 Rust 模式
8KB
87 行
用途
CowArc 可以通过共享不可变内存来减少内存分配。
它通过在 CowArc 克隆之间共享不可变值来节省一些 RAM。只有在值发生变化时才会进行内存分配。
CowArc 对于创建构建器非常有用。
示例
let source = CowArc::new(vec![1, 2, 3]);
// Still shared memory
let mut changed = cloned.clone();
assert!(std::ptr::eq(source.deref(), changed.deref()) == true);
assert!(changed.eq(&vec![1, 2, 3]));
// New memory allocation
changed.set_val(vec![1, 2, 3, 4]);
assert!(std::ptr::eq(source.deref(), changed.deref()) == false);
assert!(changed.eq(&vec![1, 2, 3, 4]));
let source = CowArc::new(vec![1, 2, 3]);
// Still shared memory
let mut updated = source.clone();
assert!(std::ptr::eq(source.deref(), updated.deref()) == true);
assert!(changed.eq(&vec![1, 2, 3]));
// New memory allocation
updated.update_val(|val|{
val.push(4);
});
assert!(std::ptr::eq(source.deref(), updated.deref()) == false);
assert!(updated.eq(&vec![1, 2, 3, 4]));