//@ check-pass | |
#![feature(coerce_unsized, dispatch_from_dyn, unsize)] | |
use std::marker::Unsize; | |
use std::ops::{CoerceUnsized, DispatchFromDyn}; | |
use std::marker::PhantomData; | |
trait Mirror { | |
type Assoc; | |
} | |
impl<T> Mirror for T { | |
type Assoc = T; | |
} | |
struct W<T: 'static> { | |
t: &'static T, | |
f: <PhantomData<T> as Mirror>::Assoc, | |
} | |
impl<T, U> CoerceUnsized<W<U>> for W<T> where T: Unsize<U> {} | |
impl<T, U> DispatchFromDyn<W<U>> for W<T> where T: Unsize<U> {} | |
fn main() {} |