use std::fmt::format; trait Printable { fn format(&self)->String; } impl Printable for i32{ fn format(&self) -> String { format!("i32: {}",*self) } } impl Printable for String{ fn format(&self) -> String { format!("string: {}",*self) } } fn print_it(z:T){ println!("{}",z.format()) } fn print_it2(z:&Printable){ println!("{}",z.format()); } fn main() { let a =123; let b="merhaba".to_string(); println!("{}",a.format()); println!("{}",b.format()); //print_it(a); //print_it(b); print_it2(&a); print_it2(&b); }