For any highly generic library (futures is the one that I hit this issue with a lot) it's easy for types to become unreadable very fast. Even impl Trait only helps so much (we're using Box<Trait> a lot in our code so impl Trait won't get us better error messages). A good solution would be to rustfmt-style pretty-print types in the error messages so that it's possible for humans to parse them. It might be useful to make this optional or otherwise limit the maximum size because I can imagine this causing diesel's types to take hundreds of lines to print. Probably some kind of overrideable heuristic would be useful to implement here.
For any highly generic library (
futuresis the one that I hit this issue with a lot) it's easy for types to become unreadable very fast. Evenimpl Traitonly helps so much (we're usingBox<Trait>a lot in our code soimpl Traitwon't get us better error messages). A good solution would be torustfmt-style pretty-print types in the error messages so that it's possible for humans to parse them. It might be useful to make this optional or otherwise limit the maximum size because I can imagine this causingdiesel's types to take hundreds of lines to print. Probably some kind of overrideable heuristic would be useful to implement here.