// run-pass

#![allow(non_camel_case_types)]
use std::cell::Cell;

struct shrinky_pointer<'a> {
  i: &'a Cell<isize>,
}

impl<'a> Drop for shrinky_pointer<'a> {
    fn drop(&mut self) {
        println!("Hello!"); self.i.set(self.i.get() - 1);
    }
}

impl<'a> shrinky_pointer<'a> {
    pub fn look_at(&self) -> isize { return self.i.get(); }
}

fn shrinky_pointer(i: &Cell<isize>) -> shrinky_pointer {
    shrinky_pointer {
        i: i
    }
}

pub fn main() {
    let my_total = &Cell::new(10);
    { let pt = shrinky_pointer(my_total); assert_eq!(pt.look_at(), 10); }
    println!("my_total = {}", my_total.get());
    assert_eq!(my_total.get(), 9);
}
