[Pre-Pre-RFC] Yet another discussion of if-let and while-let lifetime

I think, as @matthew-mcallister stated in Lifetime in match if let and while let - #6 by matthew-mcallister, this is a genuine footgun: yet another issue was just filed about it this morning.

There are temporaries which need to live for the entire statement, and there are temporaries which are not. This pre-RFC proposes adding a keyword for the programmer to control dropping earlier, but I don't see that as warranted (one could always just bind the temporary within a block); nevertheless it should be possible to analytically determine whether the temporary can be dropped early (and, if so, do it). I've dug around a little, but can't find any fleshed out proposals for doing this, but I can see it being a useful enhancement to the language.

Edit: having read the linked threads a bit more thoroughly, and in particular Lifetime in match if let and while let - #4 by CAD97, I can see now that an automated analysis will not be able to make this determination and any such change could break existing code. It probably then is a no-go without some explicit language construct (which I still think is unnecessary).