1 // run-pass 2 3 #![allow(non_camel_case_types)] 4 5 6 #[derive(Clone)] 7 struct myvec<X>(Vec<X> ); 8 myvec_deref<X:Clone>(mv: myvec<X>) -> Vec<X>9fn myvec_deref<X:Clone>(mv: myvec<X>) -> Vec<X> { 10 let myvec(v) = mv; 11 return v.clone(); 12 } 13 myvec_elt<X>(mv: myvec<X>) -> X14fn myvec_elt<X>(mv: myvec<X>) -> X { 15 let myvec(v) = mv; 16 return v.into_iter().next().unwrap(); 17 } 18 main()19pub fn main() { 20 let mv = myvec(vec![1, 2, 3]); 21 let mv_clone = mv.clone(); 22 let mv_clone = myvec_deref(mv_clone); 23 assert_eq!(mv_clone[1], 2); 24 assert_eq!(myvec_elt(mv.clone()), 1); 25 let myvec(v) = mv; 26 assert_eq!(v[2], 3); 27 } 28