rust/library
Matthias Krüger 783b56ba68
Rollup merge of #93851 - cyqsimon:option-examples, r=scottmcm
More practical examples for `Option::and_then` & `Result::and_then`

To be blatantly honest, I think the current example given for `Option::and_then` is objectively terrible. (No offence to whoever wrote them initially.)

```rust
fn sq(x: u32) -> Option<u32> { Some(x * x) }
fn nope(_: u32) -> Option<u32> { None }

assert_eq!(Some(2).and_then(sq).and_then(sq), Some(16));
assert_eq!(Some(2).and_then(sq).and_then(nope), None);
assert_eq!(Some(2).and_then(nope).and_then(sq), None);
assert_eq!(None.and_then(sq).and_then(sq), None);
```

Current example:
 - does not demonstrate that `and_then` converts `Option<T>` to `Option<U>`
 - is far removed from any realistic code
 - generally just causes more confusion than it helps

So I replaced them with two blocks:
 - the first one shows basic usage (including the type conversion)
 - the second one shows an example of typical usage

Same thing with `Result::and_then`.

Hopefully this helps with clarity.
2022-02-13 06:44:15 +01:00
..
alloc Rollup merge of #93824 - Amanieu:stable_cfg_target_has_atomic, r=davidtwco 2022-02-10 12:10:00 +01:00
backtrace@b02ed04a7e Updated backtrace submodule 2021-11-02 12:31:34 +01:00
core Rollup merge of #93851 - cyqsimon:option-examples, r=scottmcm 2022-02-13 06:44:15 +01:00
panic_abort Switch all libraries to the 2021 edition 2021-12-23 19:03:47 +08:00
panic_unwind adapt L4Bender implementation 2022-01-21 16:50:33 +01:00
portable-simd Sync rust-lang/portable-simd@03f6fbb21e 2022-01-27 11:23:40 -08:00
proc_macro Auto merge of #92598 - Badel2:panic-update-hook, r=yaahc 2022-01-16 02:18:42 +00:00
profiler_builtins Switch all libraries to the 2021 edition 2021-12-23 19:03:47 +08:00
rtstartup Bump bootstrap compiler to 1.50 beta 2020-12-30 09:27:19 -05:00
rustc-std-workspace-alloc Switch all libraries to the 2021 edition 2021-12-23 19:03:47 +08:00
rustc-std-workspace-core Switch all libraries to the 2021 edition 2021-12-23 19:03:47 +08:00
rustc-std-workspace-std Switch all libraries to the 2021 edition 2021-12-23 19:03:47 +08:00
std Rollup merge of #89926 - the8472:saturate-instant, r=Mark-Simulacrum 2022-02-13 06:44:12 +01:00
stdarch@863d31b8e1 Update stdarch submodule 2022-02-10 15:24:13 +00:00
test Rollup merge of #93416 - name1e5s:chore/remove_allow_fail, r=m-ou-se 2022-02-07 14:08:34 +00:00
unwind Switch all libraries to the 2021 edition 2021-12-23 19:03:47 +08:00