Description
I noticed with function pattern arguments that rustdoc makes some interesting choices regarding argument names.
For instance:
fn func(Foo(bar): Foo) {}
gets rustdoc'd into
fn func(__arg0: Foo) {}
(see
https://docs.rs/atuin-server/0.9.1/atuin_server/handlers/history/fn.calendar.html for a real life version)
It's hard to say what rustdoc should do in the general case, but there are some simple cases that could be improved.
For the single capture pattern, the argument could inherit the name. Eg, in the example above, it could be rendered as bar: Foo
.
However, this single capture rule should maybe not apply if in a case like
fn func(Struct { bar, .. }: Struct) {}
Since bar
might be a small subset of what the type is representing, and might be misleading (or implementation detail).
In the general case, the argument name could be a snake case version of the type name, if no conflicts. This is the best heuristic I can come up with for a sensible name