A previous sortof-related thread: Brainstorming: allowing implementing just `try_fold`, and getting `next` free
This makes me think of a potential way here of like a "bundle" kind of thing, where you implement that to get an implementation of a different trait (or maybe even a set of traits).
This would be sortof like the thing that people seem to want to do often of "anything that implements this trait gets a free implementation of Iterator
" that doesn't work because of the blanket impl. But maybe by making that part of the bundle/mixing/whatever it would be ok because the rule would be more specific and the compiler would check it more specifically.
(Very undeveloped idea, as I'm sure you can tell.)