I think I remember reading some core team member saying that he’s not against argument labels in a future version of Rust. This could mean that calls to opt.map_or(value, fun) might change to opt.map(fun, or: value). This would change the argument order. Although I think I would prefer opt.map_if_some(fun, or: value) and opt.map_if_some(foo, or_map: bar).
To me it’s clearly more logical that any functions of the form <x>_or should take their arguments in the order of (<argument relating to x>, <argument relating to the "or" case>). And also, any function of the form <x>_or_<y> should take their arguments in the order of (<argument relating to x>, <argument relating to y>).
You misunderstood me. Let me clarify. You claim that there is this strong convention to use trailing closures come hell or high water. I want proof that this convention exists. Those examples you gave, scan() and fold(), and all the other examples that I can find from stdcore and stdlib folders (other than map_or and map_or_else), they only show that there’s a convention to use trailing closures when there’s no clear logical reason not to. And in fact, there’s a clear logical reason to put the value argument before the closure argument in both scan() and fold() because the value argument is used for initialization chronologically before the closure ever gets called. And since we read from left to right, there’s a clear chronologic aspect there which directly maps to the logic of the function.