1个版本 (0个不稳定版本)
1.0.0-alpha | 2021年3月16日 |
---|
#504 in 内存管理
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,在这种情况下,版权头表示将尽可能多的部分贡献给公共领域。