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