Skip to content

Commit

Permalink
Make note that this is different in std
Browse files Browse the repository at this point in the history
These are free functions in the text, but methods in the standard
library.

Fixes #31266
  • Loading branch information
steveklabnik committed Jan 29, 2016
1 parent 552bf75 commit a2c3286
Showing 1 changed file with 5 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/doc/book/error-handling.md
Expand Up @@ -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:
Expand Down Expand Up @@ -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:

Expand Down

0 comments on commit a2c3286

Please sign in to comment.