diff options
| author | Stjepan Glavina <stjepang@gmail.com> | 2017-05-27 17:00:11 +0200 |
|---|---|---|
| committer | Stjepan Glavina <stjepang@gmail.com> | 2017-05-27 17:15:32 +0200 |
| commit | f5421367a2d72d5da415d2bbf97538099ff3ade0 (patch) | |
| tree | c226dc98d38063c18e3f65e91c87e95fde06b1dd /src/libcore | |
| parent | 0aeb9c12979e6da753701a798d04105b6b1a8c28 (diff) | |
| download | rust-f5421367a2d72d5da415d2bbf97538099ff3ade0.tar.gz rust-f5421367a2d72d5da415d2bbf97538099ff3ade0.zip | |
Docs: impls of PartialEq/PartialOrd/Ord must agree
Diffstat (limited to 'src/libcore')
| -rw-r--r-- | src/libcore/cmp.rs | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/libcore/cmp.rs b/src/libcore/cmp.rs index cc066099cf8..d523e40b49e 100644 --- a/src/libcore/cmp.rs +++ b/src/libcore/cmp.rs @@ -67,6 +67,10 @@ use self::Ordering::*; /// the rule that `eq` is a strict inverse of `ne`; that is, `!(a == b)` if and /// only if `a != b`. /// +/// Implementations of `PartialEq`, `PartialOrd`, and `Ord` *must* agree with +/// each other. It's easy to accidentally make them disagree by deriving some +/// of the traits and manually implementing others. +/// /// An example implementation for a domain in which two books are considered /// the same book if their ISBN matches, even if the formats differ: /// @@ -343,6 +347,10 @@ impl Ordering { /// Then you must define an implementation for `cmp()`. You may find it useful to use /// `cmp()` on your type's fields. /// +/// Implementations of `PartialEq`, `PartialOrd`, and `Ord` *must* agree with each other. It's +/// easy to accidentally make them disagree by deriving some of the traits and manually +/// implementing others. +/// /// Here's an example where you want to sort people by height only, disregarding `id` /// and `name`: /// @@ -431,8 +439,8 @@ impl PartialOrd for Ordering { /// /// ## How can I implement `PartialOrd`? /// -/// PartialOrd only requires implementation of the `partial_cmp` method, with the others generated -/// from default implementations. +/// `PartialOrd` only requires implementation of the `partial_cmp` method, with the others +/// generated from default implementations. /// /// However it remains possible to implement the others separately for types which do not have a /// total order. For example, for floating point numbers, `NaN < 0 == false` and `NaN >= 0 == @@ -440,6 +448,10 @@ impl PartialOrd for Ordering { /// /// `PartialOrd` requires your type to be `PartialEq`. /// +/// Implementations of `PartialEq`, `PartialOrd`, and `Ord` *must* agree with each other. It's +/// easy to accidentally make them disagree by deriving some of the traits and manually +/// implementing others. +/// /// If your type is `Ord`, you can implement `partial_cmp()` by using `cmp()`: /// /// ``` |
