#vec #reuse #allocation #api #zero-alloc

vec_storage_reuse

提供重用Vec分配的API

1个不稳定版本

0.1.0 2022年9月4日

#23 in #reuse

LGPL-3.0-only

8KB
63 代码行数(不包括注释)

vec_storage_reuse

Crates.io License

提供重用Vec分配的API。

这对于在Vec中存储具有短生命周期的数据时实现零分配很有用

    let mut objects_storage: VecStorageForReuse<Object<'static>> = VecStorageForReuse::new();

    while let Some(byte_chunk) = stream.next() { // byte_chunk only lives this scope
        let mut objects: &mut Vec<Object<'_>> = &mut *objects_storage.reuse_allocation();

        // Zero-copy parsing; Object has references to chunk
        deserialize(byte_chunk, &mut objects)?;
        process(&objects)?;
    } // byte_chunk lifetime ends

致谢

此crate将实际的不安全功能委托给recycle_vec crate,仅通过Drop提供接口来抽象容器之间的交换,这样就可以永远不忘将临时对象与存储交换回来

依赖项

~9KB