1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
// run-pass #![allow(non_camel_case_types)] use std::cell::Cell; struct r<'a> { b: &'a Cell<isize>, } impl<'a> Drop for r<'a> { fn drop(&mut self) { self.b.set(self.b.get() + 1); } } fn r(b: &Cell<isize>) -> r { r { b: b } } pub fn main() { let b = &Cell::new(0); { let _p = Some(r(b)); } assert_eq!(b.get(), 1); }