|
|
|
|
|
by steveklabnik
3738 days ago
|
|
While I don't disagree with your point, I don't agree with your reason. It's not that the compiler has trained you, it's understanding that you must bound generics by a trait to be able to call methods on the resulting value. That's a language-level understanding rather than a reading of tea leaves. This is also one reason why --explain was added; hopefully the extended diagnostics can help with unfamiliar errors. More experienced users need --explain less. |
|
Sure but here's the thing: the compiler could know report that, as you note that's language-level understanding, who's to better know the language than the compiler?
> It's not that the compiler has trained you
Maybe saying that you[0] trained yourself (in this case to pattern-match that a type mismatch between a generic T and a trait is pretty certainly a missing bound on T) would be a better way to put it?
The point is, the compiler could[1] be much more precise in its diagnosis, and much more assisting and "mentoring" in its output, but a few people argue that it's unnecessary, because they've built not just a mental model of rust but a library of pattern-matching "low-level" compiler errors into higher-level language errors and can do it in their sleep at this point.
[0] generic, you, me, pcwalton, dons, oleg, basically anyone working with a compiler
[1] I am very much not saying it's easy