> You can have options and results in C++ if you like (I sometimes use custom result types, and I certainly don't use exceptions)
It's not really practical because C++ has no true sum types. You can emulate them with a Java-style visitor pattern but that carries an immense code overhead.
You have std::variant and std::visit. https://www.bfilipek.com/2018/09/visit-variants.html
Or you can use a library: https://github.com/mpark/patterns
> You have std::variant and std::visit. https://www.bfilipek.com/2018/09/visit-variants.html
Which isn't a true sum type because it doesn't nest properly.
> Or you can use a library: https://github.com/mpark/patterns
Interesting; proper pattern-matching is nice, but the lack of type safety is still a major issue.
Anyway, I agree that some aspects of Rust unrelated to memory safety are good for correctness. Unfortunately, I can't pick languages in a vacuum, so I have to weigh that against things like GPGPU support (first rate vs. non-existent), tooling quality (particularly profilers), library support (Eigen alone is worth quite a lot) and other factors. If I could ignore all of those real world issues and just choose the better language, I don't know if I would choose Rust, but it would certainly have a decent shot.