// run-pass

#![allow(non_camel_case_types)]


#[derive(Clone)]
struct myvec<X>(Vec<X> );

fn myvec_deref<X:Clone>(mv: myvec<X>) -> Vec<X> {
    let myvec(v) = mv;
    return v.clone();
}

fn myvec_elt<X>(mv: myvec<X>) -> X {
    let myvec(v) = mv;
    return v.into_iter().next().unwrap();
}

pub fn main() {
    let mv = myvec(vec![1, 2, 3]);
    let mv_clone = mv.clone();
    let mv_clone = myvec_deref(mv_clone);
    assert_eq!(mv_clone[1], 2);
    assert_eq!(myvec_elt(mv.clone()), 1);
    let myvec(v) = mv;
    assert_eq!(v[2], 3);
}
