about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorErick Tryzelaar <erick.tryzelaar@gmail.com>2013-09-09 19:32:32 -0700
committerErick Tryzelaar <erick.tryzelaar@gmail.com>2013-09-12 18:54:12 -0700
commite6c11313c88574aa2500df2f76c5534fbc2e0512 (patch)
tree11918e2476ef68448fe58d160e91f290d0a82aff /src/libstd
parentf1374a7044d844fb1f89b651bf4c628ac32ed48a (diff)
downloadrust-e6c11313c88574aa2500df2f76c5534fbc2e0512.tar.gz
rust-e6c11313c88574aa2500df2f76c5534fbc2e0512.zip
std: Add Option.{result_or_default,or_default} that uses Default
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/option.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/libstd/option.rs b/src/libstd/option.rs
index 1f3a31a403c..84d8a3aa188 100644
--- a/src/libstd/option.rs
+++ b/src/libstd/option.rs
@@ -350,6 +350,26 @@ impl<T> Option<T> {
     }
 }
 
+impl<T: Default> Option<T> {
+    /// Returns the contained value or default (for this type)
+    #[inline]
+    pub fn unwrap_or_default(self) -> T {
+        match self {
+            Some(x) => x,
+            None => Default::default()
+        }
+    }
+
+    /// Returns self or `Some`-wrapped default value
+    #[inline]
+    pub fn or_default(self) -> Option<T> {
+        match self {
+            None => Some(Default::default()),
+            x => x,
+        }
+    }
+}
+
 impl<T> Default for Option<T> {
     fn default() -> Option<T> { None }
 }