#[inline]
#[must_use]
#[stable(feature = "rust1", since = "1.0.0")]
+ #[default_method_body_is_const]
fn ne(&self, other: &Rhs) -> bool {
!self.eq(other)
}
/// Here's an example:
///
/// ```
-/// #[derive(PartialEq, PartialOrd)]
+/// #[derive(PartialEq, Eq, PartialOrd, Ord)]
/// enum Size {
/// Small,
/// Large,
/// This trait can be used with `#[derive]`. When `derive`d on structs, it will produce a
/// lexicographic ordering based on the top-to-bottom declaration order of the struct's members.
/// When `derive`d on enums, variants are ordered by their top-to-bottom discriminant order.
+/// This means variants at the top are less than variants at the bottom.
+/// Here's an example:
+///
+/// ```
+/// #[derive(PartialEq, PartialOrd)]
+/// enum Size {
+/// Small,
+/// Large,
+/// }
+///
+/// assert!(Size::Small < Size::Large);
+/// ```
///
/// ## How can I implement `PartialOrd`?
///
/// # Examples
///
/// ```
-/// let x : u32 = 0;
-/// let y : u32 = 1;
+/// let x: u32 = 0;
+/// let y: u32 = 1;
///
/// assert_eq!(x < y, true);
/// assert_eq!(x.lt(&y), true);
#[inline]
#[must_use]
#[stable(feature = "rust1", since = "1.0.0")]
+ #[default_method_body_is_const]
fn lt(&self, other: &Rhs) -> bool {
matches!(self.partial_cmp(other), Some(Less))
}
#[inline]
#[must_use]
#[stable(feature = "rust1", since = "1.0.0")]
+ #[default_method_body_is_const]
fn le(&self, other: &Rhs) -> bool {
// Pattern `Some(Less | Eq)` optimizes worse than negating `None | Some(Greater)`.
// FIXME: The root cause was fixed upstream in LLVM with:
#[inline]
#[must_use]
#[stable(feature = "rust1", since = "1.0.0")]
+ #[default_method_body_is_const]
fn gt(&self, other: &Rhs) -> bool {
matches!(self.partial_cmp(other), Some(Greater))
}
#[inline]
#[must_use]
#[stable(feature = "rust1", since = "1.0.0")]
+ #[default_method_body_is_const]
fn ge(&self, other: &Rhs) -> bool {
matches!(self.partial_cmp(other), Some(Greater | Equal))
}