upvote
Incorrect. `become` does change drop order - https://play.rust-lang.org/?version=nightly&mode=debug&editi....
reply
That's not implementing tail calls breaks things, that's bad design of implementing tail calls breaking things.

The whole idea of "let's change semantics to make it easier" is dumb.

If you want guaranteed tail calls, change your code until it works.

reply
Uh, yes, if you guarantee the semantics only when the code explicitly opts in and not by default then semantics will not subtly change, that is the point of my comment
reply
It's not a change in semantics of compiled code. It is only a change of whether or not the code will compile.
reply