[rust-dev] Functions overloading

Niko Matsakis niko at alum.mit.edu
Wed Apr 18 17:10:43 PDT 2012


On 4/18/12 4:26 PM, Alexander Stavonin wrote:
> Stefan, I understood you idea but I have problem with compilation.
>
> fn_overloading.rs:31:34: 31:80 error: method `to_input` has an 
> incompatible type: type parameter vs int
> fn_overloading.rs:31 <http://fn_overloading.rs:31> impl <t> of 
> to_input<t> for int { fn to_input() -> input<int> { ret val(self); } }
>                                                       
>  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
I think you wanted:

     impl of to_input<int> for int { fn to_input() -> input<int> { ret 
val(self); } }

Actually, we should probably not allow free variables like that which 
are unbound in the iface type.  I am not sure what problem it can cause 
but I have distant memory of unsoundness that results from such things 
when combined with existential types... have to go refresh my memory.

> Also, am I right that in this case we could not make overloading for 
> different types, for example for str and int?

You could add to the enum and thus support overloading for as many types 
as you like.


Niko


More information about the Rust-dev mailing list