tinyvec

گاهی اوقات شما چیزی را می‌خواهید که بتوان آن را مانند Vec تغییر اندازه داد، اما بدون heap allocation که [tinyvec] (https://crates.io/crates/tinyvec) این را فراهم می‌کند: یک برداری که توسط یک آرایه یا برش پشتیبانی می‌شود که می‌تواند به‌صورت ایستا allocate داده شود یا روی stack که تعداد عناصر استفاده شده را ردیابی می‌کند و اگر سعی کنید بیشتر از آنچه که اختصاص‌داده‌شده را استفاده کنید panic می‌کند.

use tinyvec::{array_vec, ArrayVec};

fn main() {
    let mut numbers: ArrayVec<[u32; 5]> = array_vec!(42, 66);
    println!("{numbers:?}");
    numbers.push(7);
    println!("{numbers:?}");
    numbers.remove(1);
    println!("{numbers:?}");
}
  • tinyvec نیاز دارد که تایپ عنصر Default را برای مقداردهی اولیه اجرا کند.
  • ‏ Rust Playground شامل tinyvec می‌شود، بنابراین این مثال به‌خوبی به صورت داخلی اجرا می‌شود.