//! 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); | |
} |