minivec/
partial_eq.rs

1use crate::MiniVec;
2
3macro_rules! minivec_eq_impl {
4  ([$($args:tt)*] $lhs:ty, $rhs:ty) => {
5    impl<T, U, $($args)*> PartialEq<$rhs> for $lhs
6    where
7      T: PartialEq<U>,
8    {
9      #[inline]
10      fn eq(&self, other: &$rhs) -> bool {
11        self[..] == other[..]
12      }
13    }
14  };
15}
16
17minivec_eq_impl! { [] MiniVec<T>, MiniVec<U> }
18minivec_eq_impl! { [] MiniVec<T>, [U] }
19minivec_eq_impl! { [] MiniVec<T>, &[U] }
20minivec_eq_impl! { [] MiniVec<T>, &mut [U] }
21minivec_eq_impl! { [] &[T], MiniVec<U> }
22minivec_eq_impl! { [] &mut [T], MiniVec<U> }
23minivec_eq_impl! { [] MiniVec<T>, alloc::vec::Vec<U> }
24minivec_eq_impl! { [const N: usize] MiniVec<T>, [U; N] }
25minivec_eq_impl! { [const N: usize] MiniVec<T>, &[U; N] }
26
27impl<T> PartialOrd for MiniVec<T>
28where
29  T: PartialOrd,
30{
31  fn partial_cmp(&self, other: &Self) -> Option<core::cmp::Ordering> {
32    let x: &[T] = self;
33    let y: &[T] = other;
34    PartialOrd::partial_cmp(x, y)
35  }
36}