//@ compile-flags: -Zfmt-debug=shallow //@ run-pass #![feature(fmt_debug)] #![allow(dead_code)] #![allow(unused)] #[derive(Debug)] struct Foo { bar: u32, bomb: Bomb, } #[derive(Debug)] enum Baz { Quz, } struct Bomb; impl std::fmt::Debug for Bomb { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { panic!() } } fn main() { let s = format!("Debug is '{:?}' and '{:#?}'", Foo { bar: 1, bomb: Bomb }, Baz::Quz); assert_eq!("Debug is 'Foo' and 'Quz'", s); let f = 3.0; let s = format_args!("{:?}{:#?}{f:?}", 1234, cfg!(fmt_debug = "shallow")).to_string(); assert_eq!("1234true3.0", s); }