//@ compile-flags: -Zfmt-debug=none //@ run-pass #![feature(fmt_debug)] #![allow(dead_code)] #![allow(unused)] #[derive(Debug)] struct Foo { bar: u32, } #[derive(Debug)] enum Baz { Quz, } #[cfg(fmt_debug = "full")] compile_error!("nope"); #[cfg(fmt_debug = "none")] struct Custom; impl std::fmt::Debug for Custom { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { f.write_str("custom_fmt") } } fn main() { let c = Custom; let s = format!("Debug is '{:?}', '{:#?}', and '{c:?}'", Foo { bar: 1 }, Baz::Quz); assert_eq!("Debug is '', '', and ''", s); let f = 3.0; let s = format_args!("{:?}x{:#?}y{f:?}", 1234, "can't debug this").to_string(); assert_eq!("xy", s); }