diff options
Diffstat (limited to 'library')
| -rw-r--r-- | library/core/src/option.rs | 13 | ||||
| -rw-r--r-- | library/core/src/ptr/mut_ptr.rs | 1 | ||||
| -rw-r--r-- | library/core/src/result.rs | 18 |
3 files changed, 32 insertions, 0 deletions
diff --git a/library/core/src/option.rs b/library/core/src/option.rs index 8057ff07591..d4e9c384f93 100644 --- a/library/core/src/option.rs +++ b/library/core/src/option.rs @@ -285,6 +285,19 @@ //! assert_eq!(res, ["error!", "error!", "foo", "error!", "bar"]); //! ``` //! +//! ## Comparison operators +//! +//! If `T` implements [`PartialOrd`] then [`Option<T>`] will derive its +//! [`PartialOrd`] implementation. With this order, [`None`] compares as +//! less than any [`Some`], and two [`Some`] compare the same way as their +//! contained values would in `T`. If `T` also implements +//! [`Ord`], then so does [`Option<T>`]. +//! +//! ``` +//! assert!(None < Some(0)); +//! assert!(Some(0) < Some(1)); +//! ``` +//! //! ## Iterating over `Option` //! //! An [`Option`] can be iterated over. This can be helpful if you need an diff --git a/library/core/src/ptr/mut_ptr.rs b/library/core/src/ptr/mut_ptr.rs index 32b6920b59d..98a4cb59a66 100644 --- a/library/core/src/ptr/mut_ptr.rs +++ b/library/core/src/ptr/mut_ptr.rs @@ -596,6 +596,7 @@ impl<T: ?Sized> *mut T { /// enables more aggressive compiler optimizations. /// /// [`wrapping_add`]: #method.wrapping_add + /// [allocated object]: crate::ptr#allocated-object /// /// # Examples /// diff --git a/library/core/src/result.rs b/library/core/src/result.rs index 53aaa5219b1..861790e8a40 100644 --- a/library/core/src/result.rs +++ b/library/core/src/result.rs @@ -379,6 +379,24 @@ //! [`and_then`]: Result::and_then //! [`or_else`]: Result::or_else //! +//! ## Comparison operators +//! +//! If `T` and `E` both implement [`PartialOrd`] then [`Result<T, E>`] will +//! derive its [`PartialOrd`] implementation. With this order, an [`Ok`] +//! compares as less than any [`Err`], while two [`Ok`] or two [`Err`] +//! compare as their contained values would in `T` or `E` respectively. If `T` +//! and `E` both also implement [`Ord`], then so does [`Result<T, E>`]. +//! +//! ``` +//! assert!(Ok(1) < Err(0)); +//! let x: Result<i32, ()> = Ok(0); +//! let y = Ok(1); +//! assert!(x < y); +//! let x: Result<(), i32> = Err(0); +//! let y = Err(1); +//! assert!(x < y); +//! ``` +//! //! ## Iterating over `Result` //! //! A [`Result`] can be iterated over. This can be helpful if you need an |
