tinyvec

ヒープ割り当てを行わずに、Vec のようにサイズ変更できるものが欲しくなることがあります。tinyvec はそれを提供します。これは配列またはスライスを基盤とするベクタで、静的に割り当てることもスタック上に配置することもでき、使用中の要素数を追跡し、割り当てられている数を超えて使おうとするとパニックします。

// Copyright 2023 Google LLC
// SPDX-License-Identifier: Apache-2.0

use tinyvec::{ArrayVec, array_vec};

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 が含まれているため、この例はインラインでも問題なく実行できます。