On 1/25/12 12:18 PM, Marijn Haverbeke wrote:
That works, but doesn't provide the conceptual simplicity of a number
interface, and if you want to write a generic over any numeric type,
it could end up taking a<T: add, mult, sub, div> type parameter.
It seems to me that if impls did not have to declare the interfaces
which they implement (as I would prefer), then we could simply declare
several interfaces (addable, divable, num) and things would just work.
Some interfaces, like num, could be a superset of others. This would
be an alternative to introducing subtyping into interfaces. Not that
I'm opposed to that per se, but it's more than we need to solve this case.
One situation which would be improved through some sort of inheritance:
fn foo<A: add>(x: A) { ... }
fn bar<N: num>(x: N) {
foo(x);
}
This call ought to work, as num is a superset of add, but we'd need to
construct a "derived vtable" of some sort which means that we'd get
another layer of indirection at runtime. Kind of a drag.
Niko
_______________________________________________
Rust-dev mailing list
Rust-dev@mozilla.org
https://mail.mozilla.org/listinfo/rust-dev