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