Expand description
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).
§Examples
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]));
Macros§
- 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). - 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). - 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. - 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. Likearray_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.