use std::ops::Add; trait BrokenAdd: Copy + Add { fn broken_add(&self, rhs: T) -> Self { *self + rhs //~ ERROR mismatched types //~| expected type parameter `Self`, found type parameter `T` //~| expected type parameter `Self` //~| found type parameter `T` } } impl> BrokenAdd for T {} pub fn main() { let foo: u8 = 0; let x: u8 = foo.broken_add("hello darkness my old friend".to_string()); println!("{}", x); }