| //@ check-pass | |
| #![feature(coerce_unsized, unsize)] | |
| use std::marker::Unsize; | |
| use std::ops::CoerceUnsized; | |
| struct Foo<T: ?Sized>(Box<T>); | |
| impl<T> CoerceUnsized<Foo<dyn Baz>> for Foo<T> where T: Unsize<dyn Baz> {} | |
| struct Bar; | |
| trait Baz {} | |
| impl Baz for Bar {} | |
| fn main() { | |
| let foo = Foo(Box::new(Bar)); | |
| let foobar: Foo<Bar> = foo; | |
| } |