diff --git a/src/libstd/result.rs b/src/libstd/result.rs index 79198d0314f87..63ccbbaad8e41 100644 --- a/src/libstd/result.rs +++ b/src/libstd/result.rs @@ -10,15 +10,17 @@ //! A type representing either success or failure +use any::Any; use clone::Clone; use cmp::Eq; use fmt; use iter::Iterator; +use kinds::Send; use option::{None, Option, Some}; use str::OwnedStr; use to_str::ToStr; -use vec::OwnedVector; use vec; +use vec::OwnedVector; /// `Result` is a type that represents either success (`Ok`) or failure (`Err`). #[deriving(Clone, DeepClone, Eq, Ord, TotalEq, TotalOrd, ToStr)] @@ -201,6 +203,19 @@ impl Result { Err(e) => e } } + +} + +impl Result { + /// Unwraps a result, yielding the content of a `Ok` + /// Fails if the value is an `Err` with a custom failure message provided by `msg`. + #[inline] + pub fn expect(self, msg: M) -> T { + match self { + Ok(t) => t, + Err(_) => fail!(msg) + } + } } /////////////////////////////////////////////////////////////////////////////