Break with value alternatives

I don't think so. Oh well, we shall cope.

I keep saying iteration can also be a combinator…

I think @canndrew's for-else proposal I linked to earlier (with the else path receiving the generator's return value) is a much better design (except for continue); in fact, I was thinking to suggest something similar as an alternative before I saw his post. It's just a matter of choosing the actual keyword to use. And it's not even incompatible with the Option<_> proposal.

I just described it to you as the ‘backwards-compatible’ variant; no type sniffing necessary, just peek into the loop body to check if it contains a break with a value and choose the specific desugaring based on that. It's purely syntax-based. (I mean, type checking is also technically syntax, but…)

Also, since you care so much about desugarings and suggested adding inhabitedness checking to the generator proposal, I'll note that there's no way to express inhabitants checking in user code currently, so that variant cannot be desugared.