3 #![allow(dead_code, unused_variables)]
12 let b = &mut &*bar(&12);
15 fn bar(x: &u32) -> &u32 {
20 // this mod explains why we should not lint `&mut &* (&T)`
21 mod should_not_lint1 {
22 fn foo(x: &mut &u32) {
28 foo(&mut &*x); // should not lint
36 // similar to should_not_lint1
37 mod should_not_lint2 {
44 let s = S { a: &1, b: 1 };
50 // this mod explains why we should not lint `& &* (&T)`
54 let addr_x = &x as *const _ as usize;
55 let addr_y = &&*x as *const _ as usize; // assert ok
56 // let addr_y = &x as *const _ as usize; // assert fail
57 assert_ne!(addr_x, addr_y);