diff options
| author | bors <bors@rust-lang.org> | 2013-09-19 09:55:59 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2013-09-19 09:55:59 -0700 |
| commit | 755f6229da1d436f4cb23fffea644ba13291b434 (patch) | |
| tree | 7bb62b2c7de33a72c9cc9f387c80a7a4f0daa47d /src | |
| parent | 068e04231ded7fccca349babb1ba58ab3d796f40 (diff) | |
| parent | 1a90f24bbdd4decec3df35d628fdb8825675190a (diff) | |
| download | rust-755f6229da1d436f4cb23fffea644ba13291b434.tar.gz rust-755f6229da1d436f4cb23fffea644ba13291b434.zip | |
auto merge of #9279 : erickt/rust/master, r=alexcrichton
`Some(5).or_{default,zero}` can be easily replaced with `Some(Some(5).unwrap_or_default())`.
Diffstat (limited to 'src')
| -rw-r--r-- | src/libstd/option.rs | 20 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/default.rs | 8 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/zero.rs | 8 |
3 files changed, 7 insertions, 29 deletions
diff --git a/src/libstd/option.rs b/src/libstd/option.rs index 9b6d0a77cd8..42878f6effb 100644 --- a/src/libstd/option.rs +++ b/src/libstd/option.rs @@ -467,15 +467,6 @@ impl<T: Default> Option<T> { 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> { @@ -483,7 +474,7 @@ impl<T> Default for Option<T> { fn default() -> Option<T> { None } } -impl<T:Zero> Option<T> { +impl<T: Zero> Option<T> { /// Returns the contained value or zero (for this type) #[inline] pub fn unwrap_or_zero(self) -> T { @@ -492,15 +483,6 @@ impl<T:Zero> Option<T> { None => Zero::zero() } } - - /// Returns self or `Some`-wrapped zero value - #[inline] - pub fn or_zero(self) -> Option<T> { - match self { - None => Some(Zero::zero()), - x => x - } - } } /// An iterator that yields either one or zero elements diff --git a/src/libsyntax/ext/deriving/default.rs b/src/libsyntax/ext/deriving/default.rs index 0c7bbefc690..d8c78842808 100644 --- a/src/libsyntax/ext/deriving/default.rs +++ b/src/libsyntax/ext/deriving/default.rs @@ -47,9 +47,7 @@ fn default_substructure(cx: @ExtCtxt, span: Span, substr: &Substructure) -> @Exp cx.ident_of("Default"), cx.ident_of("default") ]; - let default_call = || { - cx.expr_call_global(span, default_ident.clone(), ~[]) - }; + let default_call = cx.expr_call_global(span, default_ident.clone(), ~[]); return match *substr.fields { StaticStruct(_, ref summary) => { @@ -58,13 +56,13 @@ fn default_substructure(cx: @ExtCtxt, span: Span, substr: &Substructure) -> @Exp if count == 0 { cx.expr_ident(span, substr.type_ident) } else { - let exprs = vec::from_fn(count, |_| default_call()); + let exprs = vec::from_elem(count, default_call); cx.expr_call_ident(span, substr.type_ident, exprs) } } Right(ref fields) => { let default_fields = do fields.map |ident| { - cx.field_imm(span, *ident, default_call()) + cx.field_imm(span, *ident, default_call) }; cx.expr_struct_ident(span, substr.type_ident, default_fields) } diff --git a/src/libsyntax/ext/deriving/zero.rs b/src/libsyntax/ext/deriving/zero.rs index fc527d44b53..2546cfc2e39 100644 --- a/src/libsyntax/ext/deriving/zero.rs +++ b/src/libsyntax/ext/deriving/zero.rs @@ -62,9 +62,7 @@ fn zero_substructure(cx: @ExtCtxt, span: Span, substr: &Substructure) -> @Expr { cx.ident_of("Zero"), cx.ident_of("zero") ]; - let zero_call = || { - cx.expr_call_global(span, zero_ident.clone(), ~[]) - }; + let zero_call = cx.expr_call_global(span, zero_ident.clone(), ~[]); return match *substr.fields { StaticStruct(_, ref summary) => { @@ -73,13 +71,13 @@ fn zero_substructure(cx: @ExtCtxt, span: Span, substr: &Substructure) -> @Expr { if count == 0 { cx.expr_ident(span, substr.type_ident) } else { - let exprs = vec::from_fn(count, |_| zero_call()); + let exprs = vec::from_elem(count, zero_call); cx.expr_call_ident(span, substr.type_ident, exprs) } } Right(ref fields) => { let zero_fields = do fields.map |ident| { - cx.field_imm(span, *ident, zero_call()) + cx.field_imm(span, *ident, zero_call) }; cx.expr_struct_ident(span, substr.type_ident, zero_fields) } |
