#stack #vec #vector #small #no-std

no-std smallvec

'Small vector' optimization: store up to a small number of items on the stack

49 releases (21 stable)

new 2.0.0-alpha.8 Dec 10, 2024
2.0.0-alpha.7 Jul 27, 2024
2.0.0-alpha.6 May 10, 2024
2.0.0-alpha.5 Mar 23, 2024
0.1.5 Jun 30, 2015

#4 in Data structures

Download history 3369218/week @ 2024-08-24 3022743/week @ 2024-08-31 3273974/week @ 2024-09-07 2809667/week @ 2024-09-14 3275147/week @ 2024-09-21 3483743/week @ 2024-09-28 3980886/week @ 2024-10-05 4169165/week @ 2024-10-12 3578625/week @ 2024-10-19 2952574/week @ 2024-10-26 3199035/week @ 2024-11-02 3161575/week @ 2024-11-09 3342346/week @ 2024-11-16 2793524/week @ 2024-11-23 3335713/week @ 2024-11-30 3137452/week @ 2024-12-07

13,133,845 downloads per month
Used in 51,241 crates (1,649 directly)

MIT/Apache

105KB
2.5K SLoC

rust-smallvec

⚠️ Note: This is the code for smallvec 2.0, which is not yet ready for release. For details about the changes in version 2.0, please see #183, #240, and #284.

The source code for the latest smallvec 1.x.y release can be found on the v1 branch. Bug fixes for smallvec 1 should be based on that branch, while new feature development should go on the v2 branch.

About smallvec

Documentation

Release notes

"Small vector" optimization for Rust: store up to a small number of items on the stack

Example

use smallvec::{SmallVec, smallvec};
    
// This SmallVec can hold up to 4 items on the stack:
let mut v: SmallVec<i32, 4> = smallvec![1, 2, 3, 4];

// It will automatically move its contents to the heap if
// contains more than four items:
v.push(5);

// SmallVec points to a slice, so you can use normal slice
// indexing and other methods to access its contents:
v[0] = v[1] + v[2];
v.sort();

Dependencies

~160KB