#vector #buffer #region #backed #contiguous #borrow #mutable

bufferpool

由一个连续向量支持的向量数组 - 允许非重叠区域的可变借用

7 个版本

0.1.7 2019 年 12 月 26 日
0.1.6 2019 年 12 月 17 日

#2350算法

每月 36 次下载
用于 audiograph

MIT 许可证

19KB
412

buffer-pool

Build Status

Rust 的 "向量数组",由一个连续向量支持。允许对非重叠缓冲区的可变借用。

什么是 BufferPool

BufferPool 是一个包,它允许您获取一定大小的切片,而无需为新的向量分配空间。它通过预先分配内存区域,然后在该区域内分配切片引用来实现。在音频编程等应用程序中很有用,在这些应用程序中,分配和释放数据可能很昂贵。

使用方法

创建新的 BufferPool 时,建议使用 BufferPoolBuilder 接口。虽然完全可以自己创建 BufferPool,但如果您事先知道池的大小,这样做效率更低。

let mut pool: BufferPool<usize> = BufferPoolBuilder::new()
    .with_buffer_size(1024)
    .with_capacity(100)
    .build();

let mut buffer = pool.get_cleared_space().unwrap();

for (index, value) in buffer.as_mut().iter_mut().enumerate() {
    *value = index;
}

let sum: usize = buffer.as_ref().iter().sum();

println!("Sum {}", sum);

无运行时依赖