]> git.lizzy.rs Git - rust.git/blob - tests/ui/unnecessary_clone.rs
move unnecessary clone tests
[rust.git] / tests / ui / unnecessary_clone.rs
1 #![allow(unused)]
2
3 use std::collections::HashSet;
4 use std::collections::VecDeque;
5 use std::rc::{self, Rc};
6 use std::sync::{self, Arc};
7
8 fn main() {}
9
10 fn clone_on_copy() {
11     42.clone();
12
13     vec![1].clone(); // ok, not a Copy type
14     Some(vec![1]).clone(); // ok, not a Copy type
15     (&42).clone();
16 }
17
18 fn clone_on_ref_ptr() {
19     let rc = Rc::new(true);
20     let arc = Arc::new(true);
21
22     let rcweak = Rc::downgrade(&rc);
23     let arc_weak = Arc::downgrade(&arc);
24
25     rc.clone();
26     Rc::clone(&rc);
27
28     arc.clone();
29     Arc::clone(&arc);
30
31     rcweak.clone();
32     rc::Weak::clone(&rcweak);
33
34     arc_weak.clone();
35     sync::Weak::clone(&arc_weak);
36
37
38 }
39
40 fn clone_on_copy_generic<T: Copy>(t: T) {
41     t.clone();
42
43     Some(t).clone();
44 }
45
46 fn clone_on_double_ref() {
47     let x = vec![1];
48     let y = &&x;
49     let z: &Vec<_> = y.clone();
50
51     println!("{:p} {:p}",*y, z);
52 }
53
54 fn iter_clone_collect() {
55     let v = [1,2,3,4,5];
56     let v2 : Vec<isize> = v.iter().cloned().collect();
57     let v3 : HashSet<isize> = v.iter().cloned().collect();
58     let v4 : VecDeque<isize> = v.iter().cloned().collect();
59 }