//@ run-pass | |
#![feature(unsize, coerce_unsized)] | |
// Verfies that PhantomData is ignored for DST coercions | |
use std::marker::{Unsize, PhantomData}; | |
use std::ops::CoerceUnsized; | |
struct MyRc<T: ?Sized> { | |
_ptr: *const T, | |
_boo: PhantomData<T>, | |
} | |
impl<T: ?Sized + Unsize<U>, U: ?Sized> CoerceUnsized<MyRc<U>> for MyRc<T>{ } | |
fn main() { | |
let data = [1, 2, 3]; | |
let iter = data.iter(); | |
let x = MyRc { _ptr: &iter, _boo: PhantomData }; | |
let _y: MyRc<dyn Iterator<Item=&u32>> = x; | |
} |