Skip to content

Commit d12312d

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

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

library/core/src/option.rs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1149,7 +1149,7 @@ impl<T> Option<T> {
11491149
self
11501150
}
11511151

1152-
/// Returns the provided default result (if none),
1152+
/// Returns the provided default result (if none),
11531153
/// or applies a function to the contained value (if any).
11541154
///
11551155
/// Arguments passed to `map_or` are eagerly evaluated; if you are passing
@@ -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)