// run-pass #![allow(non_camel_case_types)] use std::cell::Cell; struct r<'a> { b: &'a Cell, } impl<'a> Drop for r<'a> { fn drop(&mut self) { self.b.set(self.b.get() + 1); } } fn r(b: &Cell) -> r { r { b: b } } pub fn main() { let b = &Cell::new(0); { let _p = Some(r(b)); } assert_eq!(b.get(), 1); }