37 lines
624 B
Rust
37 lines
624 B
Rust
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() {}
|