diff options
| author | Cameron Steffen <cam.steffen94@gmail.com> | 2021-08-02 09:36:50 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-08-02 09:36:50 -0500 |
| commit | b1166e14b626bbfe1921b42d11ff8b7dfaf91855 (patch) | |
| tree | b507d3266a12a131a04b8e2f8013bae668903684 | |
| parent | 14f3418f79a6cd1ecf5aab1a2275ab8b08785990 (diff) | |
| parent | 40eaab17de1ee63491000a02a555aab6398f8376 (diff) | |
| download | rust-b1166e14b626bbfe1921b42d11ff8b7dfaf91855.tar.gz rust-b1166e14b626bbfe1921b42d11ff8b7dfaf91855.zip | |
Rollup merge of #87654 - jesyspa:issue-87238-option-result-doc, r=scottmcm
Add documentation for the order of Option and Result This resolves issue #87238.
| -rw-r--r-- | library/core/src/option.rs | 13 | ||||
| -rw-r--r-- | library/core/src/result.rs | 18 |
2 files changed, 31 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/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 |
