Rust has pattern deconstruction for function parameters on tuples, arrays and structs like this:
fn f((a, b): (u32, i32), [x, y, z]: [String; 3]) { }
struct A { a: u32, b: String }
fn g(A { a, b }: A) { }
But it has no such syntax for unnamed types / objects, since objects simply do not exist in rust.
Imagine rust had a syntax for this:
fn f(param: {a: String, b: String}) {} // Invalid code!
How would someone call that function? There is no way to construct an instance of this type. In javascript (/typescript) this is possible, because of dynamic typing, but in rust you have to know a type to be able to construct it.
If you are interested into faking keyword arguments in functions, this might help: How to best *fake* keyword style function arguments in Rust?
If you want to give the tuples a name as well as having their parameters a name, there is the unstable bindings_after_at-feature enabling this syntax:
#![feature(bindings_after_at)]
fn f(my_tuple @ (a, b): (u32, u32)) {
println!("this: {:?}", my_tuple);
println!("is the same as: {:?}", (a, b));
}
// or this
fn g(arr @ [.., tail] : [u32; 5]) {
println!("this: {}", arr[4]);
println!("is the same as: {}", tail);
}