#vec #safe #array-vec #inline #structures #enums

no-std tinyvec

tinyvec provides 100% safe vec-like data structures

30 releases (11 stable)

1.6.0 Apr 25, 2022
1.5.1 Nov 9, 2021
1.5.0 Sep 25, 2021
1.3.1 Jul 22, 2021
0.3.3 Mar 26, 2020

#33 in Data structures

Download history 1511156/week @ 2023-12-06 1485816/week @ 2023-12-13 1015157/week @ 2023-12-20 975820/week @ 2023-12-27 1422271/week @ 2024-01-03 1440574/week @ 2024-01-10 1603321/week @ 2024-01-17 1526370/week @ 2024-01-24 1668298/week @ 2024-01-31 1614479/week @ 2024-02-07 1580744/week @ 2024-02-14 1665351/week @ 2024-02-21 1771644/week @ 2024-02-28 1702315/week @ 2024-03-06 1707603/week @ 2024-03-13 1479309/week @ 2024-03-20

6,960,216 downloads per month
Used in 27,262 crates (126 directly)

Zlib OR Apache-2.0 OR MIT

345KB
13K SLoC

License:Zlib Minimum Rust Version crates.io docs.rs

Unsafe-Zero-Percent

tinyvec

A 100% safe crate of vec-like types. #![forbid(unsafe_code)]

Main types are as follows:

  • ArrayVec is an array-backed vec-like data structure. It panics on overflow.
  • SliceVec is the same deal, but using a &mut [T].
  • TinyVec (alloc feature) is an enum that's either an Inline(ArrayVec) or a Heap(Vec). If a TinyVec is Inline and would overflow it automatically transitions to Heap and continues whatever it was doing.

To attain this "100% safe code" status there is one compromise: the element type of the vecs must implement Default.

For more details, please see the docs.rs documentation

Dependencies

~200KB