Exceptions have high cost so I don't see where you are coming from. Rust's RAII goes further along than C++'s. C++ is playing a game of catchup to steal the move semantics from Rust.
In addition, Rust Results/Options are free when no throw occurs. So the argument is moot.
No they aren't, you must issue a compare instruction to verify the result was successful.
Do you know whether branch prediction makes them effectively free, in places where the result is almost always successful?
Exception handling in C++ is absolutely zero-cost when no exception occurs. Look up the Itanium ABI. In Rust, even if no error occurs, the return value must still be checked.
Additionally, Move semantics were borrowed from C++, not the other way around.