]> git.lizzy.rs Git - rust.git/blob - tests/ui/resource-destruct.rs
Merge commit '598f0909568a51de8a2d1148f55a644fd8dffad0' into sync_cg_clif-2023-01-24
[rust.git] / tests / ui / resource-destruct.rs
1 // run-pass
2
3 #![allow(non_camel_case_types)]
4 use std::cell::Cell;
5
6 struct shrinky_pointer<'a> {
7   i: &'a Cell<isize>,
8 }
9
10 impl<'a> Drop for shrinky_pointer<'a> {
11     fn drop(&mut self) {
12         println!("Hello!"); self.i.set(self.i.get() - 1);
13     }
14 }
15
16 impl<'a> shrinky_pointer<'a> {
17     pub fn look_at(&self) -> isize { return self.i.get(); }
18 }
19
20 fn shrinky_pointer(i: &Cell<isize>) -> shrinky_pointer {
21     shrinky_pointer {
22         i: i
23     }
24 }
25
26 pub fn main() {
27     let my_total = &Cell::new(10);
28     { let pt = shrinky_pointer(my_total); assert_eq!(pt.look_at(), 10); }
29     println!("my_total = {}", my_total.get());
30     assert_eq!(my_total.get(), 9);
31 }