From e3f1e562b527f98a8b81188c279ea96d5a7e0e3d Mon Sep 17 00:00:00 2001 From: CenTdemeern1 Date: Tue, 14 Jul 2026 17:45:56 +0200 Subject: [PATCH 1/3] Implement `bool::toggle` --- library/core/src/bool.rs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/library/core/src/bool.rs b/library/core/src/bool.rs index 10ef8e3b33b53..0804e5f39af9a 100644 --- a/library/core/src/bool.rs +++ b/library/core/src/bool.rs @@ -129,4 +129,32 @@ impl bool { ) -> Result<(), E> { if self { Ok(()) } else { Err(f()) } } + + /// Toggles `self` in-place. + /// + /// - If `self` is [`true`], sets `self` to [`false`]. + /// - If `self` is [`false`], sets `self` to [`true`]. + /// + /// Equivalent to `*self = !*self`. + /// + /// # Examples + /// + /// ``` + /// #![feature(bool_toggle)] + /// let mut boolean = false; + /// + /// boolean.toggle(); + /// assert_eq!(boolean, true); + /// + /// boolean.toggle(); + /// assert_eq!(boolean, false); + /// ``` + /// + /// [`true`]: ../std/keyword.true.html + /// [`false`]: ../std/keyword.false.html + #[unstable(feature = "bool_toggle", issue = "none")] + #[inline] + pub const fn toggle(&mut self) { + *self = !*self; + } } From b5a975d4ae457dd3ba71aed4592ce87b72745b63 Mon Sep 17 00:00:00 2001 From: Charlotte Herngreen Date: Tue, 14 Jul 2026 19:24:48 +0200 Subject: [PATCH 2/3] Add tracking issue for `bool_toggle` --- library/core/src/bool.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/core/src/bool.rs b/library/core/src/bool.rs index 0804e5f39af9a..8e5c6eb3b6d3b 100644 --- a/library/core/src/bool.rs +++ b/library/core/src/bool.rs @@ -152,7 +152,7 @@ impl bool { /// /// [`true`]: ../std/keyword.true.html /// [`false`]: ../std/keyword.false.html - #[unstable(feature = "bool_toggle", issue = "none")] + #[unstable(feature = "bool_toggle", issue = "159298")] #[inline] pub const fn toggle(&mut self) { *self = !*self; From 3e03dd3eeba37e3d7156b63987d0399895927ddb Mon Sep 17 00:00:00 2001 From: Charlotte Herngreen Date: Tue, 14 Jul 2026 19:27:07 +0200 Subject: [PATCH 3/3] Apply suggested doc improvement for `bool::toggle` Co-authored-by: Cameron Steffen --- library/core/src/bool.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/core/src/bool.rs b/library/core/src/bool.rs index 8e5c6eb3b6d3b..7a2823baaae0f 100644 --- a/library/core/src/bool.rs +++ b/library/core/src/bool.rs @@ -135,7 +135,7 @@ impl bool { /// - If `self` is [`true`], sets `self` to [`false`]. /// - If `self` is [`false`], sets `self` to [`true`]. /// - /// Equivalent to `*self = !*self`. + /// Equivalent to `value = !value`. /// /// # Examples ///