]>
git.proxmox.com Git - rustc.git/blob - src/tools/clippy/tests/ui/map_flatten_fixable.rs
3 #![warn(clippy::all, clippy::pedantic)]
4 #![allow(clippy::missing_docs_in_private_items)]
5 #![allow(clippy::map_identity)]
6 #![allow(clippy::redundant_closure)]
7 #![allow(clippy::unnecessary_wraps)]
8 #![feature(result_flattening)]
11 // mapping to Option on Iterator
12 fn option_id(x
: i8) -> Option
<i8> {
15 let option_id_ref
: fn(i8) -> Option
<i8> = option_id
;
16 let option_id_closure
= |x
| Some(x
);
17 let _
: Vec
<_
> = vec
![5_i8; 6].into_iter().map(option_id
).flatten().collect();
18 let _
: Vec
<_
> = vec
![5_i8; 6].into_iter().map(option_id_ref
).flatten().collect();
19 let _
: Vec
<_
> = vec
![5_i8; 6].into_iter().map(option_id_closure
).flatten().collect();
20 let _
: Vec
<_
> = vec
![5_i8; 6].into_iter().map(|x
| x
.checked_add(1)).flatten().collect();
22 // mapping to Iterator on Iterator
23 let _
: Vec
<_
> = vec
![5_i8; 6].into_iter().map(|x
| 0..x
).flatten().collect();
25 // mapping to Option on Option
26 let _
: Option
<_
> = (Some(Some(1))).map(|x
| x
).flatten();
28 // mapping to Result on Result
29 let _
: Result
<_
, &str> = (Ok(Ok(1))).map(|x
| x
).flatten();
36 let _
= [0u8, 1, 2, 3]
53 #[allow(clippy::bind_instead_of_map)] // map + flatten will be suggested to `and_then`, but afterwards `map` is suggested again
54 #[rustfmt::skip] // whitespace is important for this one
56 std
::collections
::HashMap
::<u32, u32>::new()
59 // we need some newlines
60 // so that the span is big enough
61 // for a split output of the diagnostic
63 // whitespace beforehand is important as well