1 #![deny(useless_asref)]
5 #[allow(should_implement_trait)]
7 fn as_ref(&self) -> &Self { self }
12 impl<'a, 'b, 'c> AsRef<&'a &'b &'c MoreRef> for MoreRef {
13 fn as_ref(&self) -> &&'a &'b &'c MoreRef {
18 fn foo_rstr(x: &str) { println!("{:?}", x); }
19 fn foo_rslice(x: &[i32]) { println!("{:?}", x); }
20 fn foo_mrslice(x: &mut [i32]) { println!("{:?}", x); }
21 fn foo_rrrrmr(_: &&&&MoreRef) { println!("so many refs"); }
24 let rstr: &str = "hello";
25 let mut mrslice: &mut [i32] = &mut [1,2,3];
28 let rslice: &[i32] = &*mrslice;
29 foo_rstr(rstr.as_ref());
31 foo_rslice(rslice.as_ref());
35 foo_mrslice(mrslice.as_mut());
37 foo_rslice(mrslice.as_ref());
42 let rrrrrstr = &&&&rstr;
43 let rrrrrslice = &&&&&*mrslice;
44 foo_rslice(rrrrrslice.as_ref());
45 foo_rslice(rrrrrslice);
46 foo_rstr(rrrrrstr.as_ref());
50 let mrrrrrslice = &mut &mut &mut &mut mrslice;
51 foo_mrslice(mrrrrrslice.as_mut());
52 foo_mrslice(mrrrrrslice);
53 foo_rslice(mrrrrrslice.as_ref());
54 foo_rslice(mrrrrrslice);
56 foo_rrrrmr((&&&&MoreRef).as_ref());
60 let string = "hello".to_owned();
61 let mut arr = [1,2,3];
62 let mut vec = vec![1,2,3];
65 foo_rstr(string.as_ref());
66 foo_rslice(arr.as_ref());
67 foo_rslice(vec.as_ref());
70 foo_mrslice(arr.as_mut());
71 foo_mrslice(vec.as_mut());
75 let rrrrstring = &&&&string;
76 let rrrrarr = &&&&arr;
77 let rrrrvec = &&&&vec;
78 foo_rstr(rrrrstring.as_ref());
79 foo_rslice(rrrrarr.as_ref());
80 foo_rslice(rrrrvec.as_ref());
83 let mrrrrarr = &mut &mut &mut &mut arr;
84 let mrrrrvec = &mut &mut &mut &mut vec;
85 foo_mrslice(mrrrrarr.as_mut());
86 foo_mrslice(mrrrrvec.as_mut());
89 foo_rrrrmr(MoreRef.as_ref());