diff options
| author | Ariel Davis <ariel.z.davis@icloud.com> | 2022-01-15 20:24:38 -0800 |
|---|---|---|
| committer | Ariel Davis <ariel.z.davis@icloud.com> | 2022-01-15 20:24:38 -0800 |
| commit | 828febf9e0fbd653cdcb2a949ec3defded69dc3f (patch) | |
| tree | cabb69305fd9303ca34674df12b6dd02c4bbf1ab | |
| parent | 8f33b4eed15a6c6e620e502e74f8c01e6f0702e9 (diff) | |
| download | rust-828febf9e0fbd653cdcb2a949ec3defded69dc3f.tar.gz rust-828febf9e0fbd653cdcb2a949ec3defded69dc3f.zip | |
Clear up discriminants with more examples
| -rw-r--r-- | library/core/src/cmp.rs | 70 |
1 files changed, 52 insertions, 18 deletions
diff --git a/library/core/src/cmp.rs b/library/core/src/cmp.rs index ef81e8736ed..a404b699de1 100644 --- a/library/core/src/cmp.rs +++ b/library/core/src/cmp.rs @@ -661,20 +661,37 @@ impl<T: Clone> Clone for Reverse<T> { /// /// ## Derivable /// -/// This trait can be used with `#[derive]`. When `derive`d on structs, it will produce a -/// [lexicographic](https://en.wikipedia.org/wiki/Lexicographic_order) 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: +/// This trait can be used with `#[derive]`. /// +/// When `derive`d on structs, it will produce a +/// [lexicographic](https://en.wikipedia.org/wiki/Lexicographic_order) ordering +/// based on the top-to-bottom declaration order of the struct's members. +/// +/// When `derive`d on enums, variants are ordered by their discriminants. +/// By default, the discriminant is smallest for variants at the top, and +/// largest for variants at the bottom. Here's an example: +/// +/// ``` +/// #[derive(PartialEq, Eq, PartialOrd, Ord)] +/// enum E { +/// Top, +/// Bottom, +/// } +/// +/// assert!(E::Top < E::Bottom); +/// ``` +/// +/// However, manually setting the discriminants can override this default +/// behavior: +//// /// ``` /// #[derive(PartialEq, Eq, PartialOrd, Ord)] -/// enum Size { -/// Small, -/// Large, +/// enum E { +/// Top = 2, +/// Bottom = 1, /// } /// -/// assert!(Size::Small < Size::Large); +/// assert!(E::Bottom < E::Top); /// ``` /// /// ## Lexicographical comparison @@ -895,20 +912,37 @@ impl PartialOrd for Ordering { /// /// ## Derivable /// -/// 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: +/// This trait can be used with `#[derive]`. +/// +/// When `derive`d on structs, it will produce a +/// [lexicographic](https://en.wikipedia.org/wiki/Lexicographic_order) ordering +/// based on the top-to-bottom declaration order of the struct's members. +/// +/// When `derive`d on enums, variants are ordered by their discriminants. +/// By default, the discriminant is smallest for variants at the top, and +/// largest for variants at the bottom. Here's an example: +/// +/// ``` +/// #[derive(PartialEq, PartialOrd)] +/// enum E { +/// Top, +/// Bottom, +/// } +/// +/// assert!(E::Top < E::Bottom); +/// ``` /// +/// However, manually setting the discriminants can override this default +/// behavior: +//// /// ``` /// #[derive(PartialEq, PartialOrd)] -/// enum Size { -/// Small, -/// Large, +/// enum E { +/// Top = 2, +/// Bottom = 1, /// } /// -/// assert!(Size::Small < Size::Large); +/// assert!(E::Bottom < E::Top); /// ``` /// /// ## How can I implement `PartialOrd`? |
