// run-pass #![allow(warnings)] #[derive(Debug)] pub struct Foo(pub T); use std::fmt; impl Field for T {} impl Finish for T {} impl Dt for &mut fmt::Formatter<'_> {} pub trait Field { fn field(&self, _: impl Sized) { panic!("got into field"); } } pub trait Finish { fn finish(&self) -> Result<(), std::fmt::Error> { panic!("got into finish"); } } pub trait Dt { fn debug_tuple(&self, _: &str) { panic!("got into debug_tuple"); } } fn main() { let foo = Foo(()); assert_eq!("Foo(())", format!("{:?}", foo)); }