What would actually be easier to implement in the Rust compiler as it stands at the moment
default arguments (e.g. even just c++ style trailing defaults) (on mismatched argument count … fill in the blanks)
or currying (replacing mis-matched arity with a lambda, i guess…)
or arity overloading (e.g. fn foo(a,b) and fn foo(a) become 2 distinct functions)
I’m not giving an opinion here on which would be more useful; ( I realise there are fans of both(i) and (ii), and these are mutually incompatible , and ‘neither’ may be the answer to controversy…)
I know parsing default arg expressions is fairly easy, (I got that far when I last looked at it), but I seem to remember not being able to figure out how to actually use them (e.g. what the compiler was actually doing with an unresolved function call).
I remember thinking it would be nice to ‘consider the arity as part of the function name’, and that could be a step toward implementing any of those features