What you're saying is correct (and I came up with the example quickly without putting too much thought into it, but if you remove my made up sugar, this is what I was envisioning it would desugar to, which is possible to do today:
struct FooArgs {
bar: usize,
baz: usize,
}
impl Default for FooArgs { /* .. */ }
fn foo(FooArgs { bar, baz }: FooArgs) {}
fn main() {
foo(FooArgs { bar: 3, ..Default::default() });
}
We would have to figure out what the anonymous struct syntax would be before using them for this use case.