2个版本

0.1.1 2022年12月5日
0.1.0 2022年12月5日

#31 in #重用

MIT许可证

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