Skip to content

Commit 307a6d4

Browse files
Add examples to Option::map_or documentation
1 parent 27f3361 commit 307a6d4

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

library/core/src/option.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1166,6 +1166,23 @@ impl<T> Option<T> {
11661166
///
11671167
/// let x: Option<&str> = None;
11681168
/// assert_eq!(x.map_or(42, |v| v.len()), 42);
1169+
///
1170+
/// Using a default value for an empty option.
1171+
/// let empty: Option<i32> = None;
1172+
/// assert_eq!(empty.map_or(0, |v| v * 2), 0); // Default value is used.
1173+
///
1174+
/// Applying a function to a Some value.
1175+
/// let value = Some(21);
1176+
/// assert_eq!(value.map_or(0, |v| v * 2), 42); // Function is applied to 21.
1177+
///
1178+
/// Practical example with Option<&str>:
1179+
/// let username: Option<&str> = Some("Alice");
1180+
/// let greeting = username.map_or("Hello, guest!".to_string(), |name| format!("Hello, {}!", name));
1181+
/// assert_eq!(greeting, "Hello, Alice!");
1182+
///
1183+
/// let no_username: Option<&str> = None;
1184+
/// let fallback_greeting = no_username.map_or("Hello, guest!".to_string(), |name| format!("Hello, {}!", name));
1185+
/// assert_eq!(fallback_greeting, "Hello, guest!");
11691186
/// ```
11701187
#[inline]
11711188
#[stable(feature = "rust1", since = "1.0.0")]

0 commit comments

Comments
 (0)