diff options
| author | Erick Tryzelaar <erick.tryzelaar@gmail.com> | 2013-09-09 19:32:32 -0700 |
|---|---|---|
| committer | Erick Tryzelaar <erick.tryzelaar@gmail.com> | 2013-09-12 18:54:12 -0700 |
| commit | e6c11313c88574aa2500df2f76c5534fbc2e0512 (patch) | |
| tree | 11918e2476ef68448fe58d160e91f290d0a82aff /src/libstd | |
| parent | f1374a7044d844fb1f89b651bf4c628ac32ed48a (diff) | |
| download | rust-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.rs | 20 |
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 } } |
