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}