// run-pass #![allow(non_camel_case_types)] #[derive(Clone)] struct myvec(Vec ); fn myvec_deref(mv: myvec) -> Vec { let myvec(v) = mv; return v.clone(); } fn myvec_elt(mv: myvec) -> 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); }