// run-pass #![allow(non_camel_case_types)] #[derive(Copy, Clone)] struct mytype(Mytype); #[derive(Copy, Clone)] struct Mytype { compute: fn(mytype) -> isize, val: isize, } fn compute(i: mytype) -> isize { let mytype(m) = i; return m.val + 20; } pub fn main() { let myval = mytype(Mytype{compute: compute, val: 30}); println!("{}", compute(myval)); let mytype(m) = myval; assert_eq!((m.compute)(myval), 50); }