| //! Test basic newtype pattern functionality. | |
| //@ run-pass | |
| #[derive(Copy, Clone)] | |
| struct Counter(CounterData); | |
| #[derive(Copy, Clone)] | |
| struct CounterData { | |
| compute: fn(Counter) -> isize, | |
| val: isize, | |
| } | |
| fn compute_value(counter: Counter) -> isize { | |
| let Counter(data) = counter; | |
| data.val + 20 | |
| } | |
| pub fn main() { | |
| let my_counter = Counter(CounterData { compute: compute_value, val: 30 }); | |
| // Test destructuring and function pointer call | |
| let Counter(data) = my_counter; | |
| assert_eq!((data.compute)(my_counter), 50); | |
| } |