Trait std::cmp::Eq  1.0.0
                   
                       [−]
                   
               [src]
pub trait Eq: PartialEq<Self> { }Trait for equality comparisons which are equivalence relations.
This means, that in addition to a == b and a != b being strict inverses, the equality must
be (for all a, b and c):
- reflexive: a == a;
- symmetric: a == bimpliesb == a; and
- transitive: a == bandb == cimpliesa == c.
This property cannot be checked by the compiler, and therefore Eq implies
PartialEq, and has no extra methods.
Derivable
This trait can be used with #[derive]. When derived, because Eq has
no extra methods, it is only informing the compiler that this is an
equivalence relation rather than a partial equivalence relation. Note that
the derive strategy requires all fields are Eq, which isn't
always desired.
How can I implement Eq?
If you cannot use the derive strategy, specify that your type implements
Eq, which has no methods:
enum BookFormat { Paperback, Hardback, Ebook } struct Book { isbn: i32, format: BookFormat, } impl PartialEq for Book { fn eq(&self, other: &Book) -> bool { self.isbn == other.isbn } } impl Eq for Book {}Run
Implementations on Foreign Types
impl<T> Eq for NonZero<T> where
    T: Zeroable + Eq, [src]
T: Zeroable + Eq,
impl Eq for InvalidSequence[src]
impl<'a> Eq for Utf8LossyChunk<'a>[src]
        Implementors
- impl<T> Eq for LinkedList<T> where
 T: Eq,
- impl Eq for Layout
- impl<T> Eq for Rc<T> where
 T: Eq + ?Sized,
- impl<K, V> Eq for BTreeMap<K, V> where
 K: Eq,
 V: Eq,
- impl<'a, B> Eq for Cow<'a, B> where
 B: Eq + ToOwned + ?Sized,
- impl Eq for String
- impl<T> Eq for Arc<T> where
 T: Eq + ?Sized,
- impl<T> Eq for BTreeSet<T> where
 T: Eq,
- impl Eq for CannotReallocInPlace
- impl<T> Eq for Bound<T> where
 T: Eq,
- impl Eq for AllocErr
- impl<T> Eq for Box<T> where
 T: Eq + ?Sized,
- impl Eq for ParseError
- impl<A> Eq for VecDeque<A> where
 A: Eq,
- impl<T> Eq for Vec<T> where
 T: Eq,
- impl<Ret, A, B, C, D, E, F, G, H, I, J, K, L> Eq for extern "C" fn(A, B, C, D, E, F, G, H, I, J, K, L, ...) -> Ret
- impl<Ret, A, B, C, D, E, F, G, H, I> Eq for unsafe extern "C" fn(A, B, C, D, E, F, G, H, I, ...) -> Ret
- impl<T> Eq for [T; 15] where
 T: Eq,
- impl<T, E> Eq for Result<T, E> where
 E: Eq,
 T: Eq,
- impl Eq for u64
- impl<T> Eq for Wrapping<T> where
 T: Eq,
- impl<Ret, A, B, C, D, E, F, G, H, I, J, K, L> Eq for fn(A, B, C, D, E, F, G, H, I, J, K, L) -> Ret
- impl Eq for i64
- impl<T> Eq for [T; 3] where
 T: Eq,
- impl<Ret, A, B, C, D> Eq for unsafe fn(A, B, C, D) -> Ret
- impl<Ret, A, B, C, D, E, F, G, H, I, J, K> Eq for extern "C" fn(A, B, C, D, E, F, G, H, I, J, K) -> Ret
- impl<Ret, A, B, C, D, E, F> Eq for unsafe extern "C" fn(A, B, C, D, E, F, ...) -> Ret
- impl<A, B, C, D, E, F, G, H, I, J, K> Eq for (A, B, C, D, E, F, G, H, I, J, K) where
 A: Eq,
 B: Eq,
 C: Eq,
 D: Eq,
 E: Eq,
 F: Eq,
 G: Eq,
 H: Eq,
 I: Eq,
 J: Eq,
 K: Eq + ?Sized,
- impl<Ret> Eq for fn() -> Ret
- impl<Ret, A, B, C> Eq for extern "C" fn(A, B, C, ...) -> Ret
- impl<T> Eq for [T; 10] where
 T: Eq,
- impl Eq for i128
- impl<T> Eq for [T; 4] where
 T: Eq,
- impl<Ret, A, B> Eq for unsafe extern "C" fn(A, B, ...) -> Ret
- impl<Ret, A, B, C, D, E, F> Eq for extern "C" fn(A, B, C, D, E, F, ...) -> Ret
- impl<'a, A> Eq for &'a A where
 A: Eq + ?Sized,
- impl<T> Eq for Discriminant<T>
- impl Eq for i8
- impl Eq for isize
- impl<T> Eq for Option<T> where
 T: Eq,
- impl<Ret, A, B, C, D, E, F, G, H, I> Eq for fn(A, B, C, D, E, F, G, H, I) -> Ret
- impl Eq for bool
- impl Eq for u128
- impl Eq for i16
- impl<Idx> Eq for RangeToInclusive<Idx> where
 Idx: Eq,
- impl<Ret, A, B> Eq for fn(A, B) -> Ret
- impl<Ret, A, B, C, D, E, F, G, H> Eq for unsafe fn(A, B, C, D, E, F, G, H) -> Ret
- impl<Idx> Eq for RangeFrom<Idx> where
 Idx: Eq,
- impl<T> Eq for [T; 5] where
 T: Eq,
- impl<Ret, A, B, C, D, E, F, G, H, I, J> Eq for unsafe fn(A, B, C, D, E, F, G, H, I, J) -> Ret
- impl<Y, R> Eq for GeneratorState<Y, R> where
 R: Eq,
 Y: Eq,
- impl<Ret, A, B, C> Eq for unsafe extern "C" fn(A, B, C) -> Ret
- impl<Ret, A, B, C, D> Eq for unsafe extern "C" fn(A, B, C, D) -> Ret
- impl<A, B> Eq for (A, B) where
 A: Eq,
 B: Eq + ?Sized,
- impl<T> Eq for [T; 22] where
 T: Eq,
- impl<Ret, A, B, C, D, E> Eq for extern "C" fn(A, B, C, D, E) -> Ret
- impl Eq for ParseFloatError
- impl Eq for Utf8Error
- impl<Ret, A, B, C, D, E, F, G, H, I, J, K> Eq for unsafe fn(A, B, C, D, E, F, G, H, I, J, K) -> Ret
- impl<A> Eq for (A,) where
 A: Eq + ?Sized,
- impl<T> Eq for [T; 18] where
 T: Eq,
- impl<Ret, A, B> Eq for extern "C" fn(A, B, ...) -> Ret
- impl<Ret, A, B, C, D, E, F, G, H, I, J, K> Eq for unsafe extern "C" fn(A, B, C, D, E, F, G, H, I, J, K) -> Ret
- impl<Ret, A, B, C, D, E, F, G, H, I> Eq for unsafe fn(A, B, C, D, E, F, G, H, I) -> Ret
- impl<A, B, C, D> Eq for (A, B, C, D) where
 A: Eq,
 B: Eq,
 C: Eq,
 D: Eq + ?Sized,
- impl<T> Eq for [T; 32] where
 T: Eq,
- impl<T> Eq for [T; 2] where
 T: Eq,
- impl<Ret, A, B, C, D, E, F, G, H, I> Eq for extern "C" fn(A, B, C, D, E, F, G, H, I, ...) -> Ret
- impl<T> Eq for [T; 17] where
 T: Eq,
- impl<T> Eq for [T; 6] where
 T: Eq,
- impl<T> Eq for [T; 30] where
 T: Eq,
- impl<A, B, C> Eq for (A, B, C) where
 A: Eq,
 B: Eq,
 C: Eq + ?Sized,
- impl<Ret, A, B, C, D, E, F, G, H, I, J, K, L> Eq for unsafe extern "C" fn(A, B, C, D, E, F, G, H, I, J, K, L, ...) -> Ret
- impl<A, B, C, D, E, F, G, H, I, J, K, L> Eq for (A, B, C, D, E, F, G, H, I, J, K, L) where
 A: Eq,
 B: Eq,
 C: Eq,
 D: Eq,
 E: Eq,
 F: Eq,
 G: Eq,
 H: Eq,
 I: Eq,
 J: Eq,
 K: Eq,
 L: Eq + ?Sized,
- impl<T> Eq for [T] where
 T: Eq,
- impl<T> Eq for [T; 31] where
 T: Eq,
- impl<Ret, A, B, C, D, E, F, G, H> Eq for unsafe extern "C" fn(A, B, C, D, E, F, G, H, ...) -> Ret
- impl<Ret, A, B, C, D, E, F, G> Eq for fn(A, B, C, D, E, F, G) -> Ret
- impl<Ret, A, B, C, D, E> Eq for unsafe extern "C" fn(A, B, C, D, E) -> Ret
- impl Eq for ParseIntError
- impl Eq for Ordering
- impl<Ret, A, B, C, D, E> Eq for unsafe extern "C" fn(A, B, C, D, E, ...) -> Ret
- impl<Ret, A, B, C, D, E, F> Eq for extern "C" fn(A, B, C, D, E, F) -> Ret
- impl<Ret, A, B, C, D, E, F> Eq for unsafe extern "C" fn(A, B, C, D, E, F) -> Ret
- impl<T> Eq for [T; 28] where
 T: Eq,
- impl Eq for u8
- impl<Ret, A, B, C, D, E> Eq for extern "C" fn(A, B, C, D, E, ...) -> Ret
- impl<Ret, A, B, C, D, E, F, G, H, I, J, K> Eq for unsafe extern "C" fn(A, B, C, D, E, F, G, H, I, J, K, ...) -> Ret
- impl<T> Eq for [T; 24] where
 T: Eq,
- impl<Ret, A, B, C, D, E, F, G> Eq for extern "C" fn(A, B, C, D, E, F, G) -> Ret
- impl<Ret, A, B, C, D, E, F, G, H, I> Eq for unsafe extern "C" fn(A, B, C, D, E, F, G, H, I) -> Ret
- impl<T> Eq for [T; 23] where
 T: Eq,
- impl<T> Eq for *const T where
 T: ?Sized,
- impl<A, B, C, D, E, F, G, H> Eq for (A, B, C, D, E, F, G, H) where
 A: Eq,
 B: Eq,
 C: Eq,
 D: Eq,
 E: Eq,
 F: Eq,
 G: Eq,
 H: Eq + ?Sized,
- impl<T> Eq for [T; 16] where
 T: Eq,
- impl<Ret, A> Eq for extern "C" fn(A) -> Ret
- impl Eq for NoneError
- impl<Ret, A, B, C, D, E, F, G, H> Eq for fn(A, B, C, D, E, F, G, H) -> Ret
- impl<A, B, C, D, E, F, G> Eq for (A, B, C, D, E, F, G) where
 A: Eq,
 B: Eq,
 C: Eq,
 D: Eq,
 E: Eq,
 F: Eq,
 G: Eq + ?Sized,
- impl<Ret, A, B, C, D, E, F, G, H, I, J> Eq for fn(A, B, C, D, E, F, G, H, I, J) -> Ret
- impl<Ret, A, B, C, D> Eq for extern "C" fn(A, B, C, D, ...) -> Ret
- impl<Ret> Eq for unsafe fn() -> Ret
- impl<Ret, A, B, C, D> Eq for fn(A, B, C, D) -> Ret
- impl Eq for ParseBoolError
- impl<T> Eq for [T; 19] where
 T: Eq,
- impl<Ret, A, B, C> Eq for fn(A, B, C) -> Ret
- impl Eq for RangeFull
- impl Eq for u16
- impl<Ret, A, B, C, D, E> Eq for unsafe fn(A, B, C, D, E) -> Ret
- impl<T> Eq for [T; 21] where
 T: Eq,
- impl<Ret, A, B> Eq for extern "C" fn(A, B) -> Ret
- impl<Idx> Eq for RangeInclusive<Idx> where
 Idx: Eq,
- impl Eq for Error
- impl Eq for str
- impl<T> Eq for [T; 1] where
 T: Eq,
- impl<T> Eq for [T; 11] where
 T: Eq,
- impl<Ret, A, B, C> Eq for extern "C" fn(A, B, C) -> Ret
- impl<'a, A> Eq for &'a mut A where
 A: Eq + ?Sized,
- impl<Ret, A, B> Eq for unsafe fn(A, B) -> Ret
- impl<A, B, C, D, E, F, G, H, I, J> Eq for (A, B, C, D, E, F, G, H, I, J) where
 A: Eq,
 B: Eq,
 C: Eq,
 D: Eq,
 E: Eq,
 F: Eq,
 G: Eq,
 H: Eq,
 I: Eq,
 J: Eq + ?Sized,
- impl<A, B, C, D, E> Eq for (A, B, C, D, E) where
 A: Eq,
 B: Eq,
 C: Eq,
 D: Eq,
 E: Eq + ?Sized,
- impl<Ret, A, B, C, D, E, F, G> Eq for unsafe extern "C" fn(A, B, C, D, E, F, G, ...) -> Ret
- impl<Ret, A, B, C> Eq for unsafe fn(A, B, C) -> Ret
- impl<T> Eq for [T; 27] where
 T: Eq,
- impl<Ret, A, B, C, D, E, F, G, H, I, J, K, L> Eq for unsafe extern "C" fn(A, B, C, D, E, F, G, H, I, J, K, L) -> Ret
- impl<T> Eq for [T; 20] where
 T: Eq,
- impl Eq for TypeId
- impl<Ret, A, B, C, D, E, F, G, H> Eq for extern "C" fn(A, B, C, D, E, F, G, H) -> Ret
- impl<T> Eq for [T; 8] where
 T: Eq,
- impl<A, B, C, D, E, F> Eq for (A, B, C, D, E, F) where
 A: Eq,
 B: Eq,
 C: Eq,
 D: Eq,
 E: Eq,
 F: Eq + ?Sized,
- impl<T> Eq for [T; 9] where
 T: Eq,
- impl<A, B, C, D, E, F, G, H, I> Eq for (A, B, C, D, E, F, G, H, I) where
 A: Eq,
 B: Eq,
 C: Eq,
 D: Eq,
 E: Eq,
 F: Eq,
 G: Eq,
 H: Eq,
 I: Eq + ?Sized,
- impl<Ret, A, B, C, D> Eq for unsafe extern "C" fn(A, B, C, D, ...) -> Ret
- impl<T> Eq for Reverse<T> where
 T: Eq,
- impl Eq for CharTryFromError
- impl<Ret, A, B, C, D, E, F> Eq for unsafe fn(A, B, C, D, E, F) -> Ret
- impl<Ret, A, B, C> Eq for unsafe extern "C" fn(A, B, C, ...) -> Ret
- impl<T> Eq for [T; 14] where
 T: Eq,
- impl<T> Eq for Cell<T> where
 T: Copy + Eq,
- impl<Ret, A, B, C, D> Eq for extern "C" fn(A, B, C, D) -> Ret
- impl<Ret, A, B, C, D, E, F, G, H, I, J, K> Eq for extern "C" fn(A, B, C, D, E, F, G, H, I, J, K, ...) -> Ret
- impl<Ret, A, B, C, D, E, F, G, H, I, J, K> Eq for fn(A, B, C, D, E, F, G, H, I, J, K) -> Ret
- impl<T> Eq for [T; 0] where
 T: Eq,
- impl<Ret, A> Eq for unsafe extern "C" fn(A, ...) -> Ret
- impl<Ret, A, B, C, D, E, F, G, H, I> Eq for extern "C" fn(A, B, C, D, E, F, G, H, I) -> Ret
- impl Eq for Infallible
- impl<T> Eq for [T; 13] where
 T: Eq,
- impl<T> Eq for ManuallyDrop<T> where
 T: Eq,
- impl<Ret, A, B, C, D, E, F, G, H> Eq for extern "C" fn(A, B, C, D, E, F, G, H, ...) -> Ret
- impl<T> Eq for [T; 26] where
 T: Eq,
- impl<Ret, A, B, C, D, E, F, G, H, I, J> Eq for extern "C" fn(A, B, C, D, E, F, G, H, I, J, ...) -> Ret
- impl<Idx> Eq for RangeTo<Idx> where
 Idx: Eq,
- impl<Ret, A> Eq for fn(A) -> Ret
- impl Eq for usize
- impl Eq for u32
- impl Eq for char
- impl<Ret, A, B, C, D, E, F, G> Eq for unsafe fn(A, B, C, D, E, F, G) -> Ret
- impl Eq for SearchStep
- impl<Ret, A, B, C, D, E, F, G, H> Eq for unsafe extern "C" fn(A, B, C, D, E, F, G, H) -> Ret
- impl<Ret, A, B, C, D, E, F, G, H, I, J> Eq for extern "C" fn(A, B, C, D, E, F, G, H, I, J) -> Ret
- impl<T> Eq for [T; 29] where
 T: Eq,
- impl<Ret> Eq for unsafe extern "C" fn() -> Ret
- impl<T> Eq for *mut T where
 T: ?Sized,
- impl<Ret, A, B, C, D, E> Eq for fn(A, B, C, D, E) -> Ret
- impl<T> Eq for PhantomData<T> where
 T: ?Sized,
- impl<T> Eq for RefCell<T> where
 T: Eq + ?Sized,
- impl<Ret, A, B, C, D, E, F> Eq for fn(A, B, C, D, E, F) -> Ret
- impl<T> Eq for [T; 7] where
 T: Eq,
- impl<T> Eq for [T; 12] where
 T: Eq,
- impl<Ret, A, B> Eq for unsafe extern "C" fn(A, B) -> Ret
- impl<Ret, A, B, C, D, E, F, G, H, I, J> Eq for unsafe extern "C" fn(A, B, C, D, E, F, G, H, I, J) -> Ret
- impl<Ret, A, B, C, D, E, F, G> Eq for unsafe extern "C" fn(A, B, C, D, E, F, G) -> Ret
- impl Eq for FpCategory
- impl<Ret, A> Eq for unsafe extern "C" fn(A) -> Ret
- impl<Ret, A> Eq for extern "C" fn(A, ...) -> Ret
- impl<Ret> Eq for extern "C" fn() -> Ret
- impl<Ret, A, B, C, D, E, F, G, H, I, J, K, L> Eq for unsafe fn(A, B, C, D, E, F, G, H, I, J, K, L) -> Ret
- impl<T> Eq for [T; 25] where
 T: Eq,
- impl Eq for ()
- impl<Idx> Eq for Range<Idx> where
 Idx: Eq,
- impl<Ret, A, B, C, D, E, F, G, H, I, J, K, L> Eq for extern "C" fn(A, B, C, D, E, F, G, H, I, J, K, L) -> Ret
- impl<Ret, A, B, C, D, E, F, G, H, I, J> Eq for unsafe extern "C" fn(A, B, C, D, E, F, G, H, I, J, ...) -> Ret
- impl Eq for i32
- impl<Ret, A, B, C, D, E, F, G> Eq for extern "C" fn(A, B, C, D, E, F, G, ...) -> Ret
- impl<Ret, A> Eq for unsafe fn(A) -> Ret
- impl Eq for !
- impl Eq for UnicodeVersion
- impl Eq for DecodeUtf16Error
- impl Eq for LocalKeyState
- impl Eq for ThreadId
- impl<K, V, S> Eq for HashMap<K, V, S> where
 K: Eq + Hash,
 V: Eq,
 S: BuildHasher,
- impl<T, S> Eq for HashSet<T, S> where
 T: Eq + Hash,
 S: BuildHasher,
- impl Eq for VarError
- impl Eq for CString
- impl Eq for NulError
- impl Eq for FromBytesWithNulError
- impl Eq for IntoStringError
- impl Eq for CStr
- impl Eq for OsString
- impl Eq for OsStr
- impl Eq for Permissions
- impl Eq for FileType
- impl Eq for ErrorKind
- impl Eq for SeekFrom
- impl Eq for IpAddr
- impl Eq for Ipv6MulticastScope
- impl Eq for Ipv4Addr
- impl Eq for Ipv6Addr
- impl Eq for SocketAddr
- impl Eq for SocketAddrV4
- impl Eq for SocketAddrV6
- impl Eq for AddrParseError
- impl Eq for Shutdown
- impl<'a> Eq for Prefix<'a>
- impl<'a> Eq for PrefixComponent<'a>
- impl<'a> Eq for Component<'a>
- impl<'a> Eq for Components<'a>
- impl Eq for PathBuf
- impl Eq for StripPrefixError
- impl Eq for Path
- impl Eq for Output
- impl Eq for ExitStatus
- impl<T: Eq> Eq for SendError<T>
- impl Eq for RecvError
- impl Eq for TryRecvError
- impl Eq for RecvTimeoutError
- impl<T: Eq> Eq for TrySendError<T>
- impl Eq for WaitTimeoutResult
- impl Eq for Duration
- impl Eq for Instant
- impl Eq for SystemTime