1个版本 (0个不稳定版本)

1.0.0-alpha2021年3月16日

#504 in 内存管理

MIT OR Apache-2.0 OR Zlib

13KB
151

SameVec使得在多次零拷贝解析器调用之间重用分配成为可能。

该crate提供了一个可以由不同元素类型的向量使用的分配缓冲区,只要它们具有相同的布局。这最显著地允许在一个缓冲区中使用,其中元素类型取决于函数局部生命周期。所需的向量类型在函数外部无法命名。

fn select_median_name(unparsed: &str) -> &str {
    // Problem: This type depends on the lifetime parameter. Ergo, we can not normally store _one_
    // vector in the surrounding function, and instead need to allocate here a new one.
    let mut names: Vec<_> = unparsed.split(' ').collect();
    let idx = names.len() / 2;
    *names.select_nth_unstable(idx).1
}

fn select_median_name_with_buffer<'names>(
    unparsed: &'names str,
    buf: &mut SameVec<*const str>,
) -> &'names str {
    let mut names = buf.use_for(same::for_ref());
    names.extend(unparsed.split(' '));
    let idx = names.len() / 2;
    *names.select_nth_unstable(idx).1
}

许可证

此项目受Zlib OR Apache-2.0 OR MIT许可。您可以选择Unlicense,在这种情况下,版权头表示将尽可能多的部分贡献给公共领域。

无运行时依赖