Rollup merge of #31295 - steveklabnik:gh31266, r=alexcrichton

These are free functions in the text, but methods in the standard
library.

Fixes #31266
This commit is contained in:
Manish Goregaokar 2016-01-30 17:57:17 +05:30
commit cf0f7a30f4
1 changed files with 5 additions and 0 deletions

View File

@ -265,6 +265,8 @@ fn map<F, T, A>(option: Option<T>, f: F) -> Option<A> where F: FnOnce(T) -> A {
```
Indeed, `map` is [defined as a method][2] on `Option<T>` in the standard library.
As a method, it has a slighly different signature: methods take `self`, `&self`,
or `&mut self` as their first argument.
Armed with our new combinator, we can rewrite our `extension_explicit` method
to get rid of the case analysis:
@ -294,6 +296,9 @@ fn unwrap_or<T>(option: Option<T>, default: T) -> T {
}
```
Like with `map` above, the standard library implementation is a method instead
of a free function.
The trick here is that the default value must have the same type as the value
that might be inside the `Option<T>`. Using it is dead simple in our case: