#builder #cow #ram

cow_arc

CowArc 可以通过共享不可变内存来减少内存分配。

3 个版本

0.2.2 2021 年 3 月 17 日
0.2.1 2021 年 2 月 1 日
0.2.0 2021 年 2 月 1 日

#2638Rust 模式

MIT 许可协议

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]));

无运行时依赖项