Make note that this is different in std

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

Fixes #31266
This commit is contained in:
Steve Klabnik 2016-01-29 17:48:22 -05:00
parent 552bf75e7d
commit a2c328661b

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. 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 Armed with our new combinator, we can rewrite our `extension_explicit` method
to get rid of the case analysis: 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 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: that might be inside the `Option<T>`. Using it is dead simple in our case: