trait Marker {} impl Marker for u32 {} trait MyTrait { fn foo(&self) -> impl Marker; } struct Outer; impl MyTrait for Outer { fn foo(&self) -> impl Marker { 42 } } impl dyn MyTrait { //~^ ERROR the trait `MyTrait` cannot be made into an object fn other(&self) -> impl Marker { //~^ ERROR the trait `MyTrait` cannot be made into an object MyTrait::foo(&self) //~^ ERROR the trait bound `&dyn MyTrait: MyTrait` is not satisfied //~| ERROR the trait bound `&dyn MyTrait: MyTrait` is not satisfied //~| ERROR the trait `MyTrait` cannot be made into an object } } fn main() {}