Just my two cents, semi stream of consciousness 
Love named/labelled arguments, I think it’s crazy they’re not in the language. I program OCaml professionally. It just comes up all the time, fairly often, you’ll have two ints; or two strings; it’s just a disaster waiting to happen when they aren’t named, sorry. It essentially self documents the code, without documentation… In huge codebases, older code that’s not maintained in a while, this kind of stuff comes up, and labelled arguments are just great when they’re there.
In fact there are named and unamed variants of some modules in the stdlib, and other standard lib extensions usually add labelled versions, just because they’re so universally adored 
Rust wise, syntactically, I really like the pub feature in the declaration, I thought it was very elegant reuse of the word, immediately conveyed to me it was a named argument. Nice idea! 
I have breezed this post only a couple of times, apologies if this was mentioned, or if it’s an RFC (or even a syntactic feature, though I don’t immediately see it :P) but taking another page from OCaml’s labelled arguments (on the caller side, not declaration side), the ~ symbol is used to express labels/named argument parameters:
- calling a function with labelled arguments is:
foo ~my_int:10 ~another_one:(10*3) 10.0, which will be a function foo called with the two labelled arguments specified via ~<label>:<value> syntax
- an extremely useful piece of sugar I take for granted daily is that when an argument passed to the label is the same as the label, the value assignment can be omitted. I.e.,
let my_int = 10 in
let another_one = 10*3 in
foo ~my_int ~another_one 10.0
This seems dumb but my oh my it’s magical; I find myself creating variable bindings just so the value assignment can be omitted; the code comes out cleaner, everything looks nicer, etc. It’s another version of “type punning” that OCaml uses a lot (record field name type punning is another piece of sugar I honestly sorely miss, though as I was instructed a while ago, “just write a macro” ;))
so in Rust we might do:
pub fn foo (pub my_int: u32, pub another_one: u32, _stupid_float: f32) -> u32 {
my_int * another_one
}
//
let my_int = 10;
let another_one = 10 * 3;
let res = foo(~my_int, ~another_one, 10.0);
This looks funny as I write it but I’ve typed too much to go back 
Or just brainstorming, we could get crazy and do:
let res = foo(my_int~10, another_one~(10*3), 10.0);
(sidenote, I personally dislike => suggestion; it looks strange and heavyweight to me, one too many glyphs.)
Anyway, just my thoughts, labelled arguments FTW, that and everything else feel free to punch apart 