about summary refs log tree commit diff
diff options
context:
space:
mode:
authorCameron Steffen <cam.steffen94@gmail.com>2021-08-02 09:36:50 -0500
committerGitHub <noreply@github.com>2021-08-02 09:36:50 -0500
commitb1166e14b626bbfe1921b42d11ff8b7dfaf91855 (patch)
treeb507d3266a12a131a04b8e2f8013bae668903684
parent14f3418f79a6cd1ecf5aab1a2275ab8b08785990 (diff)
parent40eaab17de1ee63491000a02a555aab6398f8376 (diff)
downloadrust-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.rs13
-rw-r--r--library/core/src/result.rs18
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