pub trait Foo { | |
type Associated; | |
} | |
pub struct X; | |
pub struct Y; | |
impl Foo for X { | |
type Associated = (); | |
} | |
impl Foo for Y { | |
type Associated = (); | |
} | |
impl X { | |
pub fn returns_sized<'a>(&'a self) -> impl Foo<Associated=()> + 'a { | |
X | |
} | |
} | |
impl Y { | |
pub fn returns_unsized<'a>(&'a self) -> Box<impl ?Sized + Foo<Associated=()> + 'a> { | |
Box::new(X) | |
} | |
} |