FWIW, this is a feature that Scala has long has as well, and is often used there to make certain pieces of “lightweight syntax” via closures feel even more first class. The syntax in Scala is even more flexible than in Swift – when combined with currying, you can get something that actually lets you define your own while loop with the same end-user syntax as the normal form.
At a high level, there’s no reason the feature can’t work in Rust – after all, you’re just signaling to the compiler that it should inject an implicit || { ... } around the argument at call sites. But the question is whether, when you do that, things work out – e.g., does the ownership system work well enough to cover interesting use cases?
FWIW, the ownership analysis for closures is set up to match the normal way of reading Rust code – you look at the closure body for all uses of variables from its environment, which will tell you whether the body needs that variable by reference, by mutuable reference, or with full ownership. See http://huonw.github.io/blog/2015/05/finding-closure-in-rust/ for more details. Offhand, it seems like this could work reasonably well with “autoclosure” syntax.
Some implications for libraries: this would eliminate the need for distinctions like and versus and_then, or various other places where we have a variant method whose sole purpose is allowing you to delay a computation. In these cases, we’re already using closures in the more complex cases, and I suspect the simpler cases would work fine with auto-closures.
The interaction with placement is quite interesting, although IIRC there are problems using a closure at all. Paging @eddyb.