type Holder { value: ref, fn store(self: mutref, next: ref) -> Void { self.value = next } } interface Storer { fn store(self: mutref, next: ref) -> Void } fn through>(holder: mutref, next: ref) -> Void { T.store(holder, next) } pub fn main() -> Void { let old: i32 = 1 let next: i32 = 2 var holder: Holder = Holder { value: &old } through(&mut holder, &next) }