//! returns: 0 //! Basic trait object dispatch test. record Counter { value: i32, } trait Adder { fn (*mut Adder) add(n: i32) -> i32; } instance Adder for Counter { fn (c: *mut Counter) add(n: i32) -> i32 { set c.value = c.value + n; return c.value; } } @default fn main() -> i32 { let mut c = Counter { value: 10 }; let a: *mut opaque Adder = &mut c; let result = a.add(5); // c.value should be 15 now. assert result == 15; let result2 = a.add(3); // c.value should be 18 now. assert result2 == 18; return 0; }