trait PrintType { fn print_type(&self); } impl PrintType for char { fn print_type(&self) { println!("char"); } } impl PrintType for f64 { fn print_type(&self) { println!("64-bit float"); } } fn prints_type_of_args(arg1: &T, arg2: &U) where T: PrintType, U: PrintType { arg1.print_type(); arg2.print_type(); } fn main() { prints_type_of_args(&'a', &2.0); prints_type_of_args(&'a', &'b'); }