On the topic of a “forced” C++ to be close to rust.
I guess technically if you forced all allocations to be in unique_ptr<> and then used std::move every time you passed it as a parameter, you would kind have the first part of rust (ownership rules) down.
But the borrow checker? Not sure how that’s possible. It might be (and in fairness, you could require all references to be const)
But I am not sure if there’s a way to do the usual 1 and only 1 borrowed mutable value. (Unless someone can think of a way?)