use std::{ | |
ops::Deref, | |
}; | |
struct Ptr<T: ?Sized>(Box<T>); | |
impl<T: ?Sized> Deref for Ptr<T> { | |
type Target = T; | |
fn deref(&self) -> &T { | |
&*self.0 | |
} | |
} | |
trait Foo { | |
fn foo(self: Ptr<Self>); //~ ERROR `Ptr<Self>` cannot be used as the type of `self` without | |
} | |
struct Bar; | |
impl Foo for Bar { | |
fn foo(self: Ptr<Self>) {} //~ ERROR `Ptr<Bar>` cannot be used as the type of `self` without | |
} | |
impl Bar { | |
fn bar(self: Box<Ptr<Self>>) {} //~ ERROR `std::boxed::Box<Ptr<Bar>>` cannot be used as the | |
} | |
fn main() {} |