My instinct is this would get hairy much faster if you want to actually close over variables compared to using a block.

Not sure if that is relevant to your point, but: For better and for worse, closing over any outer scope variables is syntactically free in Rust lambdas. You just access them.

It's syntactically free, but it can cause borrow-checker errors thst cause your code to outright fail to compile.

Yes, exactly. My concerns were semantic, not syntactic.

If the verbose return type syntax can't be elided, I think it's more or less dead as a pattern.