@@ -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