17 releases (10 breaking)
0.11.0 | Dec 17, 2024 |
---|---|
0.10.0 | Feb 29, 2024 |
0.9.0 | Nov 17, 2023 |
0.8.1 | Dec 6, 2022 |
0.1.5 | Nov 25, 2019 |
#44 in Rust patterns
592,327 downloads per month
Used in 335 crates
(72 directly)
44KB
690 lines
Correct by Construction Non-Empty List
This package exposes a type NonEmpty<T>
with a data representation
that guarantees non-emptiness statically:
struct NonEmpty<T>(T, Vec<T>)
The library is meant to have an interface similar to std::vec::Vec
:
use nonempty::NonEmpty;
let mut l = NonEmpty::new(42);
assert_eq!(l.first(), &42);
l.push(36);
l.push(58);
let v: Vec<i32> = l.into();
assert_eq!(v, vec![42, 36, 58]);
Dependencies
~180KB