Name Description Size Coverage
chars.rs ULE implementation for the `char` type. 6414 -
custom.rs 5791 -
encode.rs 16197 -
macros.rs 1302 -
mod.rs Traits over unaligned little-endian data (ULE, pronounced "yule"). The main traits for this module are [`ULE`], [`AsULE`] and, [`VarULE`]. See [the design doc](https://github.com/unicode-org/icu4x/blob/main/utils/zerovec/design_doc.md) for details on how these traits works under the hood. 18781 -
multi.rs 6540 -
niche.rs 7316 -
option.rs 8805 -
plain.rs ULE implementation for Plain Old Data types, including all sized integers. 12987 -
slices.rs 3997 -
test_utils.rs 1316 -
tuple.rs ULE impls for tuples. Rust does not guarantee the layout of tuples, so ZeroVec defines its own tuple ULE types. Impls are defined for tuples of up to 6 elements. For longer tuples, use a custom struct with [`#[make_ule]`](crate::make_ule). # Examples ``` use zerovec::ZeroVec; // ZeroVec of tuples! let zerovec: ZeroVec<(u32, char)> = [(1, 'a'), (1234901, '啊'), (100, 'अ')] .iter() .copied() .collect(); assert_eq!(zerovec.get(1), Some((1234901, '啊'))); ``` 6735 -
tuplevar.rs [`VarULE`] impls for tuples. This module exports [`Tuple2VarULE`], [`Tuple3VarULE`], ..., the corresponding [`VarULE`] types of tuples containing purely [`VarULE`] types. This can be paired with [`VarTupleULE`] to make arbitrary combinations of [`ULE`] and [`VarULE`] types. [`VarTupleULE`]: crate::ule::vartuple::VarTupleULE 13848 -
vartuple.rs Types to help compose fixed-size [`ULE`] and variable-size [`VarULE`] primitives. This module exports [`VarTuple`] and [`VarTupleULE`], which allow a single sized type and a single unsized type to be stored together as a [`VarULE`]. # Examples ``` use zerovec::ule::vartuple::{VarTuple, VarTupleULE}; use zerovec::VarZeroVec; struct Employee<'a> { id: u32, name: &'a str, }; let employees = [ Employee { id: 12345, name: "Jane Doe", }, Employee { id: 67890, name: "John Doe", }, ]; let employees_as_var_tuples = employees .into_iter() .map(|x| VarTuple { sized: x.id, variable: x.name, }) .collect::<Vec<_>>(); let employees_vzv: VarZeroVec<VarTupleULE<u32, str>> = employees_as_var_tuples.as_slice().into(); assert_eq!(employees_vzv.len(), 2); assert_eq!(employees_vzv.get(0).unwrap().sized.as_unsigned_int(), 12345); assert_eq!(&employees_vzv.get(0).unwrap().variable, "Jane Doe"); assert_eq!(employees_vzv.get(1).unwrap().sized.as_unsigned_int(), 67890); assert_eq!(&employees_vzv.get(1).unwrap().variable, "John Doe"); ``` 10533 -