]> git.proxmox.com Git - rustc.git/blame - src/tools/clippy/tests/ui/iter_overeager_cloned.fixed
New upstream version 1.63.0+dfsg1
[rustc.git] / src / tools / clippy / tests / ui / iter_overeager_cloned.fixed
CommitLineData
5099ac24
FG
1// run-rustfix
2#![warn(clippy::iter_overeager_cloned, clippy::redundant_clone, clippy::filter_next)]
04454e1e 3#![allow(dead_code, clippy::let_unit_value)]
5099ac24
FG
4
5fn main() {
6 let vec = vec!["1".to_string(), "2".to_string(), "3".to_string()];
7
8 let _: Option<String> = vec.iter().last().cloned();
9
10 let _: Option<String> = vec.iter().chain(vec.iter()).next().cloned();
11
12 let _: usize = vec.iter().filter(|x| x == &"2").count();
13
14 let _: Vec<_> = vec.iter().take(2).cloned().collect();
15
16 let _: Vec<_> = vec.iter().skip(2).cloned().collect();
17
18 let _ = vec.iter().filter(|x| x == &"2").nth(2).cloned();
19
20 let _ = [Some(Some("str".to_string())), Some(Some("str".to_string()))]
923072b8
FG
21 .iter()
22 .flatten().cloned();
5099ac24
FG
23
24 // Not implemented yet
25 let _ = vec.iter().cloned().filter(|x| x.starts_with('2'));
26
27 // Not implemented yet
28 let _ = vec.iter().cloned().map(|x| x.len());
29
30 // This would fail if changed.
31 let _ = vec.iter().cloned().map(|x| x + "2");
32
33 // Not implemented yet
34 let _ = vec.iter().cloned().find(|x| x == "2");
35
36 // Not implemented yet
37 let _ = vec.iter().cloned().for_each(|x| assert!(!x.is_empty()));
38
39 // Not implemented yet
40 let _ = vec.iter().cloned().all(|x| x.len() == 1);
41
42 // Not implemented yet
43 let _ = vec.iter().cloned().any(|x| x.len() == 1);
44
45 // Should probably stay as it is.
46 let _ = [0, 1, 2, 3, 4].iter().cloned().take(10);
923072b8
FG
47
48 // `&Range<_>` doesn't implement `IntoIterator`
49 let _ = [0..1, 2..5].iter().cloned().flatten();
5099ac24 50}
04454e1e
FG
51
52// #8527
53fn cloned_flatten(x: Option<&Option<String>>) -> Option<String> {
54 x.cloned().flatten()
55}