&gt; But in C++ if you have a const member function F() then F() can only change member variables that use the &quot;mutable&quot; key word.<p>This is not nearly enough. See the examples I gave in my other post.<p>Besides, all &quot;const&quot; means is &quot;I won&#x27;t mutate &#x27;this&#x27;&quot;. It doesn&#x27;t mean someone <i>else</i> who has a non-const reference to your object won&#x27;t mutate your object. That makes it largely useless for reasoning at a local level.<p>&gt; If we train engineers to use const member functions, then the programmer is forced to think about state and mutation.<p>The programmer may think about it, but the compiler doesn&#x27;t enforce it at all.<p>&gt; As C++98 PTSD begins to fade and C++17 becomes the cultural mental image of the language, the argument for switching to rust will become less and less compelling.<p>Only if you don&#x27;t understand how Rust works.<p>&gt; Why rust didn&#x27;t prioritize compatibility with C++ like C++ did with C boggles my mind.<p>Because C++ compatibility is impossible without being a derivative of C++, and C++ is hopeless in the safety department. I believe it is impossible to make C++ memory safe without making it not C++ anymore.<p>&gt; Instead of focusing on pragmatisim Rust focused on language purity.<p>No, Rust focused on what is <i>possible</i>.