... It takes some getting used to. If you&#x27;ve programmed in a functional way before, try shifting perspective in that direction a bit. Rust isn&#x27;t pure functional, and pure functional programming won&#x27;t work well in Rust, but the style of programming has some similar parts.<p>It&#x27;s a really bad idea to try and write stuff in a &quot;C++ way&quot; with tons of mutation, Rust encourages a rather different discipline in handling data which is at odds with the regular C++ style of programming. But this takes time to pick up. Once you&#x27;ve programmed with it for a while it feels pretty natural, though, especially since it&#x27;s very easy to reason about data in this model.<p>Here&#x27;s <i>why</i> Rust has this model: <a href="http:&#x2F;&#x2F;manishearth.github.io&#x2F;blog&#x2F;2015&#x2F;05&#x2F;17&#x2F;the-problem-with-shared-mutability&#x2F;" rel="nofollow">http:&#x2F;&#x2F;manishearth.github.io&#x2F;blog&#x2F;2015&#x2F;05&#x2F;17&#x2F;the-problem-wit...</a><p>As geofft mentioned below, you can get mutable references to multiple fields if you want.<p>In more complex situations, use Cell&lt;T&gt; (for copyable types, this is zero cost though it can prevent some optimizations) or RefCell&lt;T&gt; (this works for any type, but has a slight cost) for more fine-grained mutability control. You shouldn&#x27;t need these often, but they exist