8 let s = &String::new();
11 let b = &mut &*bar(&12);
14 fn bar(x: &u32) -> &u32 {
19 // this mod explains why we should not lint `&mut &* (&T)`
20 mod should_not_lint1 {
21 fn foo(x: &mut &u32) {
27 foo(&mut &*x); // should not lint
35 // similar to should_not_lint1
36 mod should_not_lint2 {
43 let s = S { a: &1, b: 1 };
49 // this mod explains why we should not lint `& &* (&T)`
53 let addr_x = &x as *const _ as usize;
54 let addr_y = &&*x as *const _ as usize; // assert ok
55 // let addr_y = &x as *const _ as usize; // assert fail
56 assert_ne!(addr_x, addr_y);