Files
rust/tests/ui/fmt/debug-single-call.rs

33 lines
674 B
Rust
Raw Normal View History

2025-06-27 20:45:19 +05:00
//! Test that Debug::fmt is called exactly once during formatting.
//!
//! This is a regression test for PR https://github.com/rust-lang/rust/pull/10715
//@ run-pass
//@ needs-threads
2013-12-31 15:46:27 -08:00
use std::cell::Cell;
2025-06-27 20:45:19 +05:00
use std::{fmt, thread};
struct Foo(Cell<isize>);
2015-01-28 08:34:18 -05:00
impl fmt::Debug for Foo {
fn fmt(&self, _fmt: &mut fmt::Formatter) -> fmt::Result {
let Foo(ref f) = *self;
assert_eq!(f.get(), 0);
2013-12-31 15:46:27 -08:00
f.set(1);
2014-01-30 11:56:51 -08:00
Ok(())
}
}
pub fn main() {
thread::spawn(move || {
2013-12-31 15:46:27 -08:00
let mut f = Foo(Cell::new(0));
println!("{:?}", f);
let Foo(ref mut f) = f;
assert_eq!(f.get(), 1);
})
.join()
.ok()
.unwrap();
}