If the trait fields RFC gets accepted, impls for anonymous structs feel like a natural extension, just like impls for tuples, e.g.
impl<A, B> Foo for (A, B) { /*...*/ }
// maybe use (a :A, b :B) if the grammar doesn't play nicely.
impl<A, B> Bar for { a: A, b: B } {
a = a;
b = b;
}
If the generic tuples RFC gets accepted maybe it should apply to structs too so that many procedural macro style impl can be written generically.
impl<A: Clone, ...Tail: Clone> for (A, ...Tail) {
/* ... */
}
You’d probably still need macros for things that need field names, e.g. Serialize and it might be too magical anyway.