The third one is easily most readable to me. "If this isn't true, then don't do the next thing" isn't really great IMO. But that is just your example which has double negation.
In general, I prefer if there is only one way to do something. For example, generic bounds can be either in the <> brackets, or in the where clause. This just leads to decision fatigue and inconsistencies, where one function have it one way, and another function another way. Not saying that is necessarily bad, but it's slightly annoying for me.
And your proposed syntax would kind of do the same thing - add multiple ways or returning from a function. Yes, Rust has the ? operator, but that is for Try specifically. I just don't see the added value, especially if you can do the same thing with a macro.