| //@ run-pass | |
| //@ ignore-windows | |
| //@ needs-threads | |
| use std::cell::Cell; | |
| use std::fmt; | |
| use std::thread; | |
| struct Foo(Cell<isize>); | |
| impl fmt::Debug for Foo { | |
| fn fmt(&self, _fmt: &mut fmt::Formatter) -> fmt::Result { | |
| let Foo(ref f) = *self; | |
| assert_eq!(f.get(), 0); | |
| f.set(1); | |
| Ok(()) | |
| } | |
| } | |
| pub fn main() { | |
| thread::spawn(move || { | |
| let mut f = Foo(Cell::new(0)); | |
| println!("{:?}", f); | |
| let Foo(ref mut f) = f; | |
| assert_eq!(f.get(), 1); | |
| }) | |
| .join() | |
| .ok() | |
| .unwrap(); | |
| } |