This package contains just four macros, which enable the creation
of array references to portions of arrays or slices (or things
that can be sliced).
Here is a simple example of slicing and dicing a slice into array
references with these macros. Here we implement a simple
little-endian conversion from bytes to u16
, and demonstrate code
that uses array_ref!
to extract an array reference from a larger
array. Note that the documentation for each macro also has an
example of its use.
#[macro_use]
extern crate arrayref;
fn read_u16(bytes: &[u8; 2]) -> u16 {
bytes[0] as u16 + ((bytes[1] as u16) << 8)
}
let data = [0,1,2,3,4,0,6,7,8,9];
assert_eq!(256, read_u16(array_ref![data,0,2]));
assert_eq!(4, read_u16(array_ref![data,4,2]));
array_mut_ref | You can use array_mut_ref to generate a mutable array reference
to a subset of a sliceable bit of data (which could be an array,
or a slice, or a Vec).
|
array_ref | You can use array_ref to generate an array reference to a subset
of a sliceable bit of data (which could be an array, or a slice,
or a Vec).
|
array_refs | You can use array_refs to generate a series of array references
to an input array reference. The idea is if you want to break an
array into a series of contiguous and non-overlapping arrays.
array_refs is a bit funny in that it insists on slicing up the
entire array. This is intentional, as I find it handy to make
me ensure that my sub-arrays add up to the entire array. This
macro will never panic, since the sizes are all checked at
compile time.
|
mut_array_refs | You can use mut_array_refs to generate a series of mutable array
references to an input mutable array reference. The idea is if
you want to break an array into a series of contiguous and
non-overlapping mutable array references. Like array_refs! ,
mut_array_refs! is a bit funny in that it insists on slicing up
the entire array. This is intentional, as I find it handy to
make me ensure that my sub-arrays add up to the entire array.
This macro will never panic, since the sizes are all checked at
compile time.
|