3 #![allow(non_camel_case_types)]
5 #![feature(box_syntax)]
9 // Resources can't be copied, but storing into data structures counts
10 // as a move unless the stored thing is used afterwards.
16 struct BoxR<'a> { x: r<'a> }
18 impl<'a> Drop for r<'a> {
20 self.i.set(self.i.get() + 1)
24 fn r(i: &Cell<isize>) -> r {
31 let i = &Cell::new(0);
33 let _a = BoxR {x: r(i)};
35 assert_eq!(i.get(), 1);
43 let i = &Cell::new(0);
47 assert_eq!(i.get(), 1);
51 let i = &Cell::new(0);
55 assert_eq!(i.get(), 1);
59 let i = &Cell::new(0);
61 let _a: Box<_> = box r(i);
63 assert_eq!(i.get(), 1);
66 fn test_unique_rec() {
67 let i = &Cell::new(0);
69 let _a: Box<_> = box BoxR {
73 assert_eq!(i.get(), 1);