about summary refs log tree commit diff
path: root/library/std/src
diff options
context:
space:
mode:
authorArtur Roos <artur.roos@ktnlvr.dev>2025-04-23 14:31:34 +0300
committerArtur Roos <artur.roos@ktnlvr.dev>2025-04-23 14:31:34 +0300
commit36ae6575fd85dd6eb9a00e097e47b38fa25235a0 (patch)
treef1e2584a2da38e4ac34d59ee1034f4ff58383bcc /library/std/src
parentb8005bff3248cfc6e327faf4fa631ac49bb49ba9 (diff)
downloadrust-36ae6575fd85dd6eb9a00e097e47b38fa25235a0.tar.gz
rust-36ae6575fd85dd6eb9a00e097e47b38fa25235a0.zip
Document breaking out of a named code block
Diffstat (limited to 'library/std/src')
-rw-r--r--library/std/src/keyword_docs.rs27
1 files changed, 27 insertions, 0 deletions
diff --git a/library/std/src/keyword_docs.rs b/library/std/src/keyword_docs.rs
index c07c391892d..b0e55c78725 100644
--- a/library/std/src/keyword_docs.rs
+++ b/library/std/src/keyword_docs.rs
@@ -109,6 +109,33 @@ mod as_keyword {}
 /// println!("{result}");
 /// ```
 ///
+/// It is also possible to exit from any *labelled* block returning the value early.
+/// If no value specified `break;` returns `()`.
+///
+/// ```rust
+/// let inputs = vec!["Cow", "Cat", "Dog", "Snake", "Cod"];
+///
+/// let mut results = vec![];
+/// for input in inputs {
+///     let result = 'filter: {
+///         if input.len() > 3 {
+///             break 'filter Err("Too long");
+///         };
+///
+///         if !input.contains("C") {
+///             break 'filter Err("No Cs");
+///         };
+///
+///         Ok(input.to_uppercase())
+///     };
+///
+///     results.push(result);
+/// }
+///
+/// // [Ok("COW"), Ok("CAT"), Err("No Cs"), Err("Too long"), Ok("COD")]
+/// println!("{:?}", results)
+/// ```
+///
 /// For more details consult the [Reference on "break expression"] and the [Reference on "break and
 /// loop values"].
 ///