1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#![feature(arbitrary_self_types)] use std::ops::Deref; struct Foo(u32); impl Foo { fn get<R: Deref<Target=Self>>(self: R) -> u32 { self.0 } } fn main() { let mut foo = Foo(1); foo.get::<&Foo>(); //~^ ERROR mismatched types }