Skip to main content

generic_array/ext_impls/
impl_as_slice.rs

1use as_slice::{AsMutSlice, AsSlice};
2
3use crate::{ArrayLength, GenericArray};
4
5impl<T, N: ArrayLength> AsSlice for GenericArray<T, N> {
6    type Element = T;
7
8    #[inline(always)]
9    fn as_slice(&self) -> &[T] {
10        self.as_ref()
11    }
12}
13
14impl<T, N: ArrayLength> AsMutSlice for GenericArray<T, N> {
15    #[inline(always)]
16    fn as_mut_slice(&mut self) -> &mut [T] {
17        self.as_mut()
18    }
19}
20
21#[cfg(test)]
22mod tests {
23    use crate::{arr, typenum::U4, GenericArray};
24    use as_slice::{AsMutSlice, AsSlice};
25
26    #[test]
27    fn as_slice_impls() {
28        let mut a = arr![1u8, 2, 3, 4];
29        assert_eq!(<GenericArray<u8, U4> as AsSlice>::as_slice(&a), &[1, 2, 3, 4]);
30        <GenericArray<u8, U4> as AsMutSlice>::as_mut_slice(&mut a)[0] = 9;
31        assert_eq!(a[0], 9);
32    }
33}