| > 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. 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 |