trait box_trait { fn get() -> T; fn set(t: T); } enum box_impl = { mut f: T }; impl box_impl: box_trait { fn get() -> T { return self.f; } fn set(t: T) { self.f = t; } } fn set_box_trait(b: box_trait<@const T>, v: @const T) { b.set(v); } fn set_box_impl(b: box_impl<@const T>, v: @const T) { b.set(v); } fn main() { let b = box_impl::<@int>({mut f: @3}); set_box_trait(b as box_trait::<@int>, @mut 5); //~^ ERROR values differ in mutability set_box_impl(b, @mut 5); //~^ ERROR values differ in mutability }