#![allow(dead_code, deprecated, unused_variables, unused_mut)] use std::fmt; struct Foo(f32); impl fmt::Display for Foo { fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result { if let Some(precision) = formatter.precision() { write!(formatter, "Foo({1:.*})", precision, self.0) } else { write!(formatter, "Foo({:.2})", self.0) } } } fn main() { assert_eq!(format!("{:.4}", Foo(23.2)), "Foo(23.2000)"); assert_eq!(format!("{}", Foo(23.2)), "Foo(23.20)"); }