Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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, поэтому этот пример будет работать прямо в браузере.