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>9 fn 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>) -> X14 fn myvec_elt<X>(mv: myvec<X>) -> X {
15     let myvec(v) = mv;
16     return v.into_iter().next().unwrap();
17 }
18 
main()19 pub 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