Not only that, but it adds an extra layer of complexity for type inferencing, which quite frankly is already complex enough.

That said, you can do a limited form of overloading using impls:

impl methods for int {
    fn foo() { ... }
}

impl methods for uint {
    fn foo() { ... }
}




Niko

On 4/12/12 3:01 AM, David Rajchenbach-Teller wrote:
On Thu Apr 12 10:08:21 2012, Alexander Stavonin wrote:
What's about function overloading? Something like this:

fn foo(val: int) {
     io::println("int");
}

fn foo(val: str) {
     io::println("str");
}

fn main() {
     foo(1);
     foo("test");
}

But :(

main.rs:3:0: 5:1 error: duplicate definition of foo
main.rs:3 fn foo(val: int) {
main.rs:4     io::println("int");
main.rs:5 }

As I understood, similar code can be implemented by using ifase and impl, but 
it's very cumbersome way.
My personal experience is that you want function overloading to be very
explicit. Having too much overloading makes it much easier to misread
code.

So, I personally would not advocate C++-style function overloading.

--
David Rajchenbach-Teller, PhD
  Performance Team, Mozilla



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

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

Reply via email to