diff options
| author | Sandeep Datta <datta.sandeep@gmail.com> | 2016-01-20 19:48:00 +0530 |
|---|---|---|
| committer | Sandeep Datta <datta.sandeep@gmail.com> | 2016-01-20 19:48:00 +0530 |
| commit | 5f20143ccfd1a74a8a104ecac33f777ade12992f (patch) | |
| tree | 74a6ad1104099da133ccec1d9dc2059a85e0d1fe | |
| parent | 25d068e36ed2f4c1b526185fbb2763c38616a10f (diff) | |
| download | rust-5f20143ccfd1a74a8a104ecac33f777ade12992f.tar.gz rust-5f20143ccfd1a74a8a104ecac33f777ade12992f.zip | |
Fixed line wrapping.
| -rw-r--r-- | src/doc/book/error-handling.md | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/doc/book/error-handling.md b/src/doc/book/error-handling.md index b5c0eabba9d..d4df6a813bc 100644 --- a/src/doc/book/error-handling.md +++ b/src/doc/book/error-handling.md @@ -359,11 +359,18 @@ fn file_path_ext(file_path: &str) -> Option<&str> { } ``` -The `map` function here wraps the value returned by the `extension` function inside an `Option<_>` and since the `extension` function itself returns an `Option<&str>` the expression `file_name(file_path).map(|x| extension(x))` actually returns an `Option<Option<&str>>`. +The `map` function here wraps the value returned by the `extension` function +inside an `Option<_>` and since the `extension` function itself returns an +`Option<&str>` the expression `file_name(file_path).map(|x| extension(x))` +actually returns an `Option<Option<&str>>`. -But since `file_path_ext` just returns `Option<&str>` (and not `Option<Option<&str>>`) we get a compilation error. +But since `file_path_ext` just returns `Option<&str>` (and not +`Option<Option<&str>>`) we get a compilation error. -The result of the function taken by map as input is *always* [rewrapped with `Some`](#code-option-map). Instead, we need something like `map`, but which allows the caller to return a `Option<_>` directly without wrapping it in another `Option<_>`. +The result of the function taken by map as input is *always* [rewrapped with +`Some`](#code-option-map). Instead, we need something like `map`, but which +allows the caller to return a `Option<_>` directly without wrapping it in +another `Option<_>`. Its generic implementation is even simpler than `map`: @@ -387,7 +394,9 @@ fn file_path_ext(file_path: &str) -> Option<&str> { } ``` -Side note: Since `and_then` essentially works like `map` but returns an `Option<_>` instead of an `Option<Option<_>>` it is known as `flatmap` in some other languages. +Side note: Since `and_then` essentially works like `map` but returns an +`Option<_>` instead of an `Option<Option<_>>` it is known as `flatmap` in some +other languages. The `Option` type has many other combinators [defined in the standard library][5]. It is a good idea to skim this list and familiarize |
