| // run-pass | |
| #![allow(non_camel_case_types)] | |
| use std::cell::Cell; | |
| #[derive(Debug)] | |
| struct r<'a> { | |
| i: &'a Cell<isize>, | |
| } | |
| impl<'a> Drop for r<'a> { | |
| fn drop(&mut self) { | |
| self.i.set(self.i.get() + 1); | |
| } | |
| } | |
| fn r(i: &Cell<isize>) -> r { | |
| r { | |
| i: i | |
| } | |
| } | |
| pub fn main() { | |
| let i = &Cell::new(0); | |
| // Even though these look like copies, they are guaranteed not to be | |
| { | |
| let a = r(i); | |
| let b = (a, 10); | |
| let (c, _d) = b; | |
| println!("{:?}", c); | |
| } | |
| assert_eq!(i.get(), 1); | |
| } |