struct Victim<'a, T: Perpetrator + ?Sized> where Self: Sized { value: u8, perp: &'a T, } trait VictimTrait { type Ret; fn get(self) -> Self::Ret; } // Actual fix is here impl<'a, T: Perpetrator /*+ ?Sized*/> VictimTrait for Victim<'a, T> { type Ret = u8; fn get(self) -> Self::Ret { self.value } } trait Perpetrator { fn getter<'a>(&'a self) -> Victim<'a, Self> { Victim { value: 0, perp: self, } } fn trigger(&self) { self.getter().get(); //~^ ERROR the method `get` exists for struct `Victim<'_, Self>`, but its trait bounds were not satisfied } } fn main() {}