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
//@ run-pass 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 } } pub fn main() { let b = &Cell::new(0); { let _p = Some(r(b)); } assert_eq!(b.get(), 1); }