From fe7f7e9e4fb54ff3ef12b15237513f5f1accedfe Mon Sep 17 00:00:00 2001 From: Joshua Cearley Date: Wed, 25 Dec 2013 02:52:41 -0600 Subject: [PATCH] Add Result::expect() for consistency with Option::expect(). --- src/libstd/result.rs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) 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) + } + } } /////////////////////////////////////////////////////////////////////////////