I have thought a bit about potential syntax for quickly implementing traits, and this could reduce the help reduce the boiler plate.
struct Foo(u32);
use std::fmt::*;
impl Foo {
fn Debug::fmt(&self, f: &mut Formatter) -> Result { .. }
// with this might be too much, but possible in theory
fn std::ops::Add::<Output = Self>::add(self, other: Self) -> Self::Output { .. }
}
(specifically the Self::Output as a part of return is a bit shakey, since you'd often have to write Add::Output, or even <Self as Add>::Output to disambiguate. (trait::Output could be used instead?))