Yeah, I got that whole thing totally wrong. I've removed that part of the post and linked to this discussion instead. Thankyou for de-confusing me :)
> The second argument can never be self. It's always the first.
I think we are talking past each other on this point. I'm thinking of the design-time choice between eg:
trait Observe<Observee> {
fn observe(self, observee: Observee);
}
trait Observe<Observer> {
fn observe(self, observer: Observer);
}
trait Observe<Observer, Observee> {
fn observe(observer: Observer, observee: Observee);
}
Analogous to the typical OO problem where it's not clear which class a method should belong too.Because I mistakenly believed that where clauses are less powerful I thought that the above choice had additional significance beyond code organisation, because it would affect the kind of constraints I could write. But they aren't so it doesn't matter :)