I've noticed a couple of usability issues with typeclasses:
(1) There's no easy place to search in a file to find all the typeclass implementations presently in scope.
(2) It's hard to see at a glance whether a dereference with '.' is a method call or whether it's a record field access. It's subtle when a record contains closures. (In fact, it can even be ambiguous in such cases...)
As a couple of simple-to-implement tweaks, I'd like to suggest the following solutions:
(1) Typeclass imports become "import impl". So you'd write "import impl driver::diagnostic::handler" where you'd write "import driver::diagnostic::handler" today. This way, when you look at a method call and you don't know where it's coming from, you just grep for "import impl" and look at all the implementations in scope.
(2) Change method calls to '->', like C++, Perl, and PHP. That operator is free and it has precedent. And getting away from overloading the dot worked well when we changed module access from '.' to '::'.
Thoughts? Patrick _______________________________________________ Rust-dev mailing list [email protected] https://mail.mozilla.org/listinfo/rust-dev
