3 struct A { a: Box<i32> }
6 fn get(&self) -> i32 { *self.a }
9 fn foo(n: i32) -> i32 {
10 let x = A { a: Box::new(n) };
12 A { a: v } if *v == 42 => v,
18 fn bar(n: i32) -> i32 {
19 let x = A { a: Box::new(n) };
21 A { a: v } if x.get() == 42 => v,
27 fn baz(n: i32) -> i32 {
28 let x = A { a: Box::new(n) };
30 A { a: v } if *v.clone() == 42 => v,
37 assert_eq!(foo(107), 0);
38 assert_eq!(foo(42), 42);
39 assert_eq!(bar(107), 0);
40 assert_eq!(bar(42), 42);
41 assert_eq!(baz(107), 0);
42 assert_eq!(baz(42), 42);