2个版本
0.1.1 | 2022年12月5日 |
---|---|
0.1.0 | 2022年12月5日 |
#31 in #重用
4KB
PolyVec
创建用于迭代重用引用借用缓冲区
lib.rs
:
此包帮助重用分配的Vec
内存。
示例1
use polyvec::*;
let mut v: PolyVec = Vec::<(usize, usize)>::with_capacity(128).into();
for _ in 0..10 {
let g: Vec<usize> = v.try_into().unwrap();
assert!(g.capacity() >= 256);
v = g.into();
}
示例2
use polyvec::*;
let src_vec: Vec<_> = (0..256).collect();
let mut poly = PolyVec::new::<&usize>();
for i in 1..=3 {
println!("ITERATION {i} --- ");
let mut refs: Vec<&usize> = poly.try_into().unwrap();
let mut prev_capacity = refs.capacity();
let mut num_realloc = 0;
for i in 0..src_vec.len() {
refs.push(&src_vec[i]);
if prev_capacity != refs.capacity() {
println!(" Cap {prev_capacity} -> {}", refs.capacity());
prev_capacity = refs.capacity();
num_realloc += 1;
}
}
println!(" => reallocation: {num_realloc}");
poly = refs.into();
}
依赖项
~300–760KB
~18K SLoC