]> git.lizzy.rs Git - rust.git/blob - tests/ui/map_clone.rs
[`excessive_bools`] lint trait functions even without bodies
[rust.git] / tests / ui / map_clone.rs
1 // run-rustfix
2 #![warn(clippy::map_clone)]
3 #![allow(
4     clippy::clone_on_copy,
5     clippy::iter_cloned_collect,
6     clippy::many_single_char_names,
7     clippy::redundant_clone
8 )]
9
10 fn main() {
11     let _: Vec<i8> = vec![5_i8; 6].iter().map(|x| *x).collect();
12     let _: Vec<String> = vec![String::new()].iter().map(|x| x.clone()).collect();
13     let _: Vec<u32> = vec![42, 43].iter().map(|&x| x).collect();
14     let _: Option<u64> = Some(Box::new(16)).map(|b| *b);
15     let _: Option<u64> = Some(&16).map(|b| *b);
16     let _: Option<u8> = Some(&1).map(|x| x.clone());
17
18     // Don't lint these
19     let v = vec![5_i8; 6];
20     let a = 0;
21     let b = &a;
22     let _ = v.iter().map(|_x| *b);
23     let _ = v.iter().map(|_x| a.clone());
24     let _ = v.iter().map(|&_x| a);
25
26     // Issue #498
27     let _ = std::env::args().map(|v| v.clone());
28
29     // Issue #4824 item types that aren't references
30     {
31         use std::rc::Rc;
32
33         let o: Option<Rc<u32>> = Some(Rc::new(0_u32));
34         let _: Option<u32> = o.map(|x| *x);
35         let v: Vec<Rc<u32>> = vec![Rc::new(0_u32)];
36         let _: Vec<u32> = v.into_iter().map(|x| *x).collect();
37     }
38
39     // Issue #5524 mutable references
40     {
41         let mut c = 42;
42         let v = vec![&mut c];
43         let _: Vec<u32> = v.into_iter().map(|x| *x).collect();
44         let mut d = 21;
45         let v = vec![&mut d];
46         let _: Vec<u32> = v.into_iter().map(|&mut x| x).collect();
47     }
48
49     // Issue #6299
50     {
51         let mut aa = 5;
52         let mut bb = 3;
53         let items = vec![&mut aa, &mut bb];
54         let _: Vec<_> = items.into_iter().map(|x| x.clone()).collect();
55     }
56
57     // Issue #6239 deref coercion and clone deref
58     {
59         use std::cell::RefCell;
60
61         let _ = Some(RefCell::new(String::new()).borrow()).map(|s| s.clone());
62     }
63 }