|
162 | 162 | //! The [`is_some`] and [`is_none`] methods return [`true`] if the [`Option`] |
163 | 163 | //! is [`Some`] or [`None`], respectively. |
164 | 164 | //! |
| 165 | +//! The [`is_some_and`] and [`is_none_or`] methods apply the provided function |
| 166 | +//! to the contents of the [`Option`] to produce a boolean value. |
| 167 | +//! If this is [`None`] then a default result is returned instead without executing the function. |
| 168 | +//! |
165 | 169 | //! [`is_none`]: Option::is_none |
166 | 170 | //! [`is_some`]: Option::is_some |
| 171 | +//! [`is_some_and`]: Option::is_some_and |
| 172 | +//! [`is_none_or`]: Option::is_none_or |
167 | 173 | //! |
168 | 174 | //! ## Adapters for working with references |
169 | 175 | //! |
|
177 | 183 | //! <code>[Option]<[Pin]<[&]T>></code> |
178 | 184 | //! * [`as_pin_mut`] converts from <code>[Pin]<[&mut] [Option]\<T>></code> to |
179 | 185 | //! <code>[Option]<[Pin]<[&mut] T>></code> |
| 186 | +//! * [`as_slice`] returns a one-element slice of the contained value, if any. |
| 187 | +//! If this is [`None`], an empty slice is returned. |
| 188 | +//! * [`as_mut_slice`] returns a mutable one-element slice of the contained value, if any. |
| 189 | +//! If this is [`None`], an empty slice is returned. |
180 | 190 | //! |
181 | 191 | //! [&]: reference "shared reference" |
182 | 192 | //! [&mut]: reference "mutable reference" |
|
187 | 197 | //! [`as_pin_mut`]: Option::as_pin_mut |
188 | 198 | //! [`as_pin_ref`]: Option::as_pin_ref |
189 | 199 | //! [`as_ref`]: Option::as_ref |
| 200 | +//! [`as_slice`]: Option::as_slice |
| 201 | +//! [`as_mut_slice`]: Option::as_mut_slice |
190 | 202 | //! |
191 | 203 | //! ## Extracting the contained value |
192 | 204 | //! |
|
200 | 212 | //! (which must implement the [`Default`] trait) |
201 | 213 | //! * [`unwrap_or_else`] returns the result of evaluating the provided |
202 | 214 | //! function |
| 215 | +//! * [`unwrap_unchecked`] produces *[undefined behavior]* |
203 | 216 | //! |
204 | 217 | //! [`expect`]: Option::expect |
205 | 218 | //! [`unwrap`]: Option::unwrap |
206 | 219 | //! [`unwrap_or`]: Option::unwrap_or |
207 | 220 | //! [`unwrap_or_default`]: Option::unwrap_or_default |
208 | 221 | //! [`unwrap_or_else`]: Option::unwrap_or_else |
| 222 | +//! [`unwrap_unchecked`]: Option::unwrap_unchecked |
| 223 | +//! [undefined behavior]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html |
209 | 224 | //! |
210 | 225 | //! ## Transforming contained values |
211 | 226 | //! |
|
230 | 245 | //! * [`filter`] calls the provided predicate function on the contained |
231 | 246 | //! value `t` if the [`Option`] is [`Some(t)`], and returns [`Some(t)`] |
232 | 247 | //! if the function returns `true`; otherwise, returns [`None`] |
233 | | -//! * [`flatten`] removes one level of nesting from an |
234 | | -//! [`Option<Option<T>>`] |
| 248 | +//! * [`flatten`] removes one level of nesting from an [`Option<Option<T>>`] |
| 249 | +//! * [`inspect`] method takes ownership of the [`Option`] and applies |
| 250 | +//! the provided function to the contained value by reference if [`Some`] |
235 | 251 | //! * [`map`] transforms [`Option<T>`] to [`Option<U>`] by applying the |
236 | 252 | //! provided function to the contained value of [`Some`] and leaving |
237 | 253 | //! [`None`] values unchanged |
238 | 254 | //! |
239 | 255 | //! [`Some(t)`]: Some |
240 | 256 | //! [`filter`]: Option::filter |
241 | 257 | //! [`flatten`]: Option::flatten |
| 258 | +//! [`inspect`]: Option::inspect |
242 | 259 | //! [`map`]: Option::map |
243 | 260 | //! |
244 | 261 | //! These methods transform [`Option<T>`] to a value of a possibly |
@@ -621,6 +638,10 @@ impl<T> Option<T> { |
621 | 638 | /// |
622 | 639 | /// let x: Option<u32> = None; |
623 | 640 | /// assert_eq!(x.is_some_and(|x| x > 1), false); |
| 641 | + /// |
| 642 | + /// let x: Option<String> = Some("ownership".to_string()); |
| 643 | + /// assert_eq!(x.as_ref().is_some_and(|x| x.len() > 1), true); |
| 644 | + /// println!("still alive {:?}", x); |
624 | 645 | /// ``` |
625 | 646 | #[must_use] |
626 | 647 | #[inline] |
@@ -665,6 +686,10 @@ impl<T> Option<T> { |
665 | 686 | /// |
666 | 687 | /// let x: Option<u32> = None; |
667 | 688 | /// assert_eq!(x.is_none_or(|x| x > 1), true); |
| 689 | + /// |
| 690 | + /// let x: Option<String> = Some("ownership".to_string()); |
| 691 | + /// assert_eq!(x.as_ref().is_none_or(|x| x.len() > 1), true); |
| 692 | + /// println!("still alive {:?}", x); |
668 | 693 | /// ``` |
669 | 694 | #[must_use] |
670 | 695 | #[inline] |
|
0 commit comments