// revisions: curr object_safe_for_dispatch #![cfg_attr(object_safe_for_dispatch, feature(object_safe_for_dispatch))] use std::rc::Rc; trait Foo { fn foo(self: &Rc) -> usize; } trait Bar { fn foo(self: &Rc) -> usize where Self: Sized; fn bar(self: Rc) -> usize; } impl Foo for usize { fn foo(self: &Rc) -> usize { **self } } impl Bar for usize { fn foo(self: &Rc) -> usize { **self } fn bar(self: Rc) -> usize { *self } } fn make_foo() { let x = Rc::new(5usize) as Rc; //[curr]~^ ERROR E0038 //[curr]~| ERROR E0038 //[object_safe_for_dispatch]~^^^ ERROR E0038 } fn make_bar() { let x = Rc::new(5usize) as Rc; x.bar(); } fn main() {}