On 1/12/12 1:17 PM, Marijn Haverbeke wrote:
Note the phrase "aren't known at compile time." That reads as if bounded types
offer runtime polymorphism. (They don't, do they?)
They do.

They do and they don't. I think what Graham means is that if I write a function:

   inter X { ... }
   fn foo<T:X>(x: [T]) { ... }

The function foo() is compiled without knowledge of what T is, but it can only be applied to one T at a time. In other words, the list is always a list of values of one type (i.e., T). This is polymorphic but in a somewhat more limited sense than a C++ object.

However, we also allow values to be *cast* to the interface type, so you can write:

    fn foo(x: [X]) { ... }

and now the function foo() accepts a list whose contents may be of many different types, all of which support the interface X.


Niko
_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to