37 lines
625 B
Rust
37 lines
625 B
Rust
//@ run-rustfix
|
|
use std::ops::Deref;
|
|
|
|
trait Happy {}
|
|
struct LDM;
|
|
impl Happy for &LDM {}
|
|
|
|
struct Foo(LDM);
|
|
struct Bar(Foo);
|
|
struct Baz(Bar);
|
|
impl Deref for Foo {
|
|
type Target = LDM;
|
|
fn deref(&self) -> &Self::Target {
|
|
&self.0
|
|
}
|
|
}
|
|
impl Deref for Bar {
|
|
type Target = Foo;
|
|
fn deref(&self) -> &Self::Target {
|
|
&self.0
|
|
}
|
|
}
|
|
impl Deref for Baz {
|
|
type Target = Bar;
|
|
fn deref(&self) -> &Self::Target {
|
|
&self.0
|
|
}
|
|
}
|
|
|
|
fn foo<T>(_: T) where T: Happy {}
|
|
|
|
fn main() {
|
|
let baz = Baz(Bar(Foo(LDM)));
|
|
foo(&***baz);
|
|
//~^ ERROR the trait bound `&Baz: Happy` is not satisfied
|
|
}
|