|  | 
| 259 | 259 | //! The [`is_ok`] and [`is_err`] methods return [`true`] if the [`Result`] | 
| 260 | 260 | //! is [`Ok`] or [`Err`], respectively. | 
| 261 | 261 | //! | 
|  | 262 | +//! The [`is_ok_and`] and [`is_err_and`] methods apply the provided function | 
|  | 263 | +//! to the contents of the [`Result`] to produce a boolean value. If the [`Result`] does not have the expected variant | 
|  | 264 | +//! then [`false`] is returned instead without executing the function. | 
|  | 265 | +//! | 
| 262 | 266 | //! [`is_err`]: Result::is_err | 
| 263 | 267 | //! [`is_ok`]: Result::is_ok | 
|  | 268 | +//! [`is_ok_and`]: Result::is_ok_and | 
|  | 269 | +//! [`is_err_and`]: Result::is_err_and | 
| 264 | 270 | //! | 
| 265 | 271 | //! ## Adapters for working with references | 
| 266 | 272 | //! | 
|  | 
| 287 | 293 | //!   (which must implement the [`Default`] trait) | 
| 288 | 294 | //! * [`unwrap_or_else`] returns the result of evaluating the provided | 
| 289 | 295 | //!   function | 
|  | 296 | +//! * [`unwrap_unchecked`] produces *[undefined behavior]* | 
| 290 | 297 | //! | 
| 291 | 298 | //! The panicking methods [`expect`] and [`unwrap`] require `E` to | 
| 292 | 299 | //! implement the [`Debug`] trait. | 
|  | 
| 297 | 304 | //! [`unwrap_or`]: Result::unwrap_or | 
| 298 | 305 | //! [`unwrap_or_default`]: Result::unwrap_or_default | 
| 299 | 306 | //! [`unwrap_or_else`]: Result::unwrap_or_else | 
|  | 307 | +//! [`unwrap_unchecked`]: Result::unwrap_unchecked | 
|  | 308 | +//! [undefined behavior]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html | 
| 300 | 309 | //! | 
| 301 | 310 | //! These methods extract the contained value in a [`Result<T, E>`] when it | 
| 302 | 311 | //! is the [`Err`] variant. They require `T` to implement the [`Debug`] | 
| 303 | 312 | //! trait. If the [`Result`] is [`Ok`]: | 
| 304 | 313 | //! | 
| 305 | 314 | //! * [`expect_err`] panics with a provided custom message | 
| 306 | 315 | //! * [`unwrap_err`] panics with a generic message | 
|  | 316 | +//! * [`unwrap_err_unchecked`] produces *[undefined behavior]* | 
| 307 | 317 | //! | 
| 308 | 318 | //! [`Debug`]: crate::fmt::Debug | 
| 309 | 319 | //! [`expect_err`]: Result::expect_err | 
| 310 | 320 | //! [`unwrap_err`]: Result::unwrap_err | 
|  | 321 | +//! [`unwrap_err_unchecked`]: Result::unwrap_err_unchecked | 
|  | 322 | +//! [undefined behavior]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html | 
| 311 | 323 | //! | 
| 312 | 324 | //! ## Transforming contained values | 
| 313 | 325 | //! | 
|  | 
| 330 | 342 | //! [`Some(v)`]: Option::Some | 
| 331 | 343 | //! [`transpose`]: Result::transpose | 
| 332 | 344 | //! | 
| 333 |  | -//! This method transforms the contained value of the [`Ok`] variant: | 
|  | 345 | +//! These methods transform the contained value of the [`Ok`] variant: | 
| 334 | 346 | //! | 
| 335 | 347 | //! * [`map`] transforms [`Result<T, E>`] into [`Result<U, E>`] by applying | 
| 336 | 348 | //!   the provided function to the contained value of [`Ok`] and leaving | 
| 337 | 349 | //!   [`Err`] values unchanged | 
|  | 350 | +//! * [`inspect`] takes ownership of the [`Result`], applies the | 
|  | 351 | +//!   provided function to the contained value by reference, | 
|  | 352 | +//!   and then returns the [`Result`] | 
| 338 | 353 | //! | 
| 339 | 354 | //! [`map`]: Result::map | 
|  | 355 | +//! [`inspect`]: Result::inspect | 
| 340 | 356 | //! | 
| 341 |  | -//! This method transforms the contained value of the [`Err`] variant: | 
|  | 357 | +//! These methods transform the contained value of the [`Err`] variant: | 
| 342 | 358 | //! | 
| 343 | 359 | //! * [`map_err`] transforms [`Result<T, E>`] into [`Result<T, F>`] by | 
| 344 | 360 | //!   applying the provided function to the contained value of [`Err`] and | 
| 345 | 361 | //!   leaving [`Ok`] values unchanged | 
|  | 362 | +//! * [`inspect_err`] takes ownership of the [`Result`], applies the | 
|  | 363 | +//!   provided function to the contained value of [`Err`] by reference, | 
|  | 364 | +//!   and then returns the [`Result`] | 
| 346 | 365 | //! | 
| 347 | 366 | //! [`map_err`]: Result::map_err | 
|  | 367 | +//! [`inspect_err`]: Result::inspect_err | 
| 348 | 368 | //! | 
| 349 | 369 | //! These methods transform a [`Result<T, E>`] into a value of a possibly | 
| 350 | 370 | //! different type `U`: | 
| @@ -578,6 +598,10 @@ impl<T, E> Result<T, E> { | 
| 578 | 598 |     /// | 
| 579 | 599 |     /// let x: Result<u32, &str> = Err("hey"); | 
| 580 | 600 |     /// assert_eq!(x.is_ok_and(|x| x > 1), false); | 
|  | 601 | +    /// | 
|  | 602 | +    /// let x: Result<String, &str> = Ok("ownership".to_string()); | 
|  | 603 | +    /// assert_eq!(x.as_ref().is_ok_and(|x| x.len() > 1), true); | 
|  | 604 | +    /// println!("still alive {:?}", x); | 
| 581 | 605 |     /// ``` | 
| 582 | 606 |     #[must_use] | 
| 583 | 607 |     #[inline] | 
| @@ -623,6 +647,10 @@ impl<T, E> Result<T, E> { | 
| 623 | 647 |     /// | 
| 624 | 648 |     /// let x: Result<u32, Error> = Ok(123); | 
| 625 | 649 |     /// assert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), false); | 
|  | 650 | +    /// | 
|  | 651 | +    /// let x: Result<u32, String> = Err("ownership".to_string()); | 
|  | 652 | +    /// assert_eq!(x.as_ref().is_err_and(|x| x.len() > 1), true); | 
|  | 653 | +    /// println!("still alive {:?}", x); | 
| 626 | 654 |     /// ``` | 
| 627 | 655 |     #[must_use] | 
| 628 | 656 |     #[inline] | 
|  | 
0 commit comments