#![allow(dead_code, deprecated, unused_variables, unused_mut)] use std::fmt; use std::net::Ipv4Addr; struct Foo { bar: i32, baz: String, addr: Ipv4Addr, } impl fmt::Debug for Foo { fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { fmt.debug_struct("Foo") .field("bar", &self.bar) .field("baz", &self.baz) .field("addr", &format_args!("{}", self.addr)) .finish() } } fn main() { assert_eq!( "Foo { bar: 10, baz: \"Hello World\", addr: 127.0.0.1 }", format!("{:?}", Foo { bar : 10, baz : "Hello World".to_string(), addr : Ipv4Addr::new(127, 0, 0, 1), }) ); }