about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2022-09-23 15:40:20 +0200
committerGitHub <noreply@github.com>2022-09-23 15:40:20 +0200
commit6b001f3d68c5b970b2316a97427e33560b9be543 (patch)
treed16cd97ebd6a54d4f640512a44ca7ad9d6eb7231
parent986fc4b5d2762efc918d40c264718fad4af8720e (diff)
parentca26dec15fb35f8e27c517baf2b147edefbb4cd6 (diff)
downloadrust-6b001f3d68c5b970b2316a97427e33560b9be543.tar.gz
rust-6b001f3d68c5b970b2316a97427e33560b9be543.zip
Rollup merge of #102115 - Alfriadox:master, r=thomcc
Add examples to `bool::then` and `bool::then_some`

Added examples to `bool::then` and `bool::then_some` to show the distinction between the eager evaluation of `bool::then_some` and the lazy evaluation of `bool::then`.
-rw-r--r--library/core/src/bool.rs23
1 files changed, 23 insertions, 0 deletions
diff --git a/library/core/src/bool.rs b/library/core/src/bool.rs
index 7667a650837..db1c505ba38 100644
--- a/library/core/src/bool.rs
+++ b/library/core/src/bool.rs
@@ -18,6 +18,18 @@ impl bool {
     /// assert_eq!(false.then_some(0), None);
     /// assert_eq!(true.then_some(0), Some(0));
     /// ```
+    ///
+    /// ```
+    /// let mut a = 0;
+    /// let mut function_with_side_effects = || { a += 1; };
+    ///
+    /// true.then_some(function_with_side_effects());
+    /// false.then_some(function_with_side_effects());
+    ///
+    /// // `a` is incremented twice because the value passed to `then_some` is
+    /// // evaluated eagerly.
+    /// assert_eq!(a, 2);
+    /// ```
     #[stable(feature = "bool_to_option", since = "1.62.0")]
     #[rustc_const_unstable(feature = "const_bool_to_option", issue = "91917")]
     #[inline]
@@ -37,6 +49,17 @@ impl bool {
     /// assert_eq!(false.then(|| 0), None);
     /// assert_eq!(true.then(|| 0), Some(0));
     /// ```
+    ///
+    /// ```
+    /// let mut a = 0;
+    ///
+    /// true.then(|| { a += 1; });
+    /// false.then(|| { a += 1; });
+    ///
+    /// // `a` is incremented once because the closure is evaluated lazily by
+    /// // `then`.
+    /// assert_eq!(a, 1);
+    /// ```
     #[stable(feature = "lazy_bool_to_option", since = "1.50.0")]
     #[rustc_const_unstable(feature = "const_bool_to_option", issue = "91917")]
     #[inline]