I think the only realistic way to do this is to make it totally automatic, either by calling applicable or adding a new trait system that’s significantly better than what we do now (which would either not require manually adding definitions, or would add enough value that it would be worth changing code).
I don’t think this is comparable to the existing iterator traits, since those are basically tweaks. Things generally work without them.