#bounds #lower-bounds #limit #type #vector #bounded-vec

bounded-vector

Vec wrapper that guarantees upper and lower bounds on type level

6 releases

0.2.1 Apr 16, 2024
0.2.0 Apr 15, 2024
0.1.3 Apr 15, 2024

#1261 in Rust patterns


Used in terra-plr

MIT/Apache

27KB
627 lines

bounded-vector

crates.io

BoundedVec<T, LOW, UPP> - Vec wrapper that guarantees upper and lower bounds on type level. Alternative to bounded-vec that offers compatibility with empty vector, has more methods and bvec! that works like vec! macro.

Example

use bounded_vector::{BoundedVec, bvec};
let mut data: BoundedVec<u8, 2, 4> = [1, 2].try_into()?;

assert_eq!(data.first(), Some(1));
assert_eq!(data.last(), Some(2));

data.iter_mut().for_each(|x| *x *= 2);
assert_eq!(data, bvec![2, 4]?);

License

Licensed under either of MIT or Apache-2.0 at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.


lib.rs:

[BoundedVec<T, LOW, UPP>] - Vec wrapper that guarantees upper and lower bounds on type level. Alternative to bounded-vec that offers compatibility with empty vector, has more methods and bvec! that works like vec! macro.

Example

#
use bounded_vector::{BoundedVec, bvec};
let mut data: BoundedVec<u8, 2, 4> = [1, 2].try_into()?;

assert_eq!(data.first(), Some(&1));
assert_eq!(data.last(), Some(&2));

data.iter_mut().for_each(|x| *x *= 2);
assert_eq!(data, bvec![2, 4]?);

Dependencies

~240–690KB
~16K SLoC