1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use crate::*;

macro_rules! __impl_slice_eq1 {
    ([$($vars:tt)*] $lhs:ty, $rhs:ty $(where $ty:ty: $bound:ident)?) => {
        impl<T, U, $($vars)*> PartialEq<$rhs> for $lhs
        where
            T: PartialEq<U>,
            $($ty: $bound)?
        {
            #[inline]
            fn eq(&self, other: &$rhs) -> bool { self[..] == other[..] }
        }
    }
}

__impl_slice_eq1! { [const N: usize] ArrayBuf<T, N>, ArrayBuf<U, N>}
__impl_slice_eq1! { [const N: usize] ArrayBuf<T, N>, &[U]}
__impl_slice_eq1! { [const N: usize] ArrayBuf<T, N>, &mut [U]}
__impl_slice_eq1! { [const N: usize] &[T], ArrayBuf<U, N>}
__impl_slice_eq1! { [const N: usize] &mut [T], ArrayBuf<U, N>}
__impl_slice_eq1! { [const N: usize] ArrayBuf<T, N>, [U] }
__impl_slice_eq1! { [const N: usize] [T], ArrayBuf<U, N> }

__impl_slice_eq1! { [const N: usize] ArrayBuf<T, N>, [U; N]}
__impl_slice_eq1! { [const N: usize] ArrayBuf<T, N>, &[U; N]}