[rust-dev] A couple of tweaks to make typeclasses easier?
stefan.plantikow at googlemail.com
Wed Jan 25 14:10:19 PST 2012
Am Mittwoch, 25. Januar 2012 um 21:12 schrieb Patrick Walton:
> 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.
Hmm, maybe the compiler could help with that by having a simple macro which would print the list, or by having some flag which would emit it.
> (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
I kind-of like it that way because it simplifies replacing record access with getter typeclass methods without too much refactoring.
> (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.
Maybe there is the need for an "import impl module::*" to get them all.
And an "import all module::*". I would find it a tad annoying to need 2 import statements to import everything from a single module.
> (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 '::'.
That may just be me but I always found that ugly and slow to type (on non-us keyboards at least)
More information about the Rust-dev