&gt;Code that takes a full structure <i>when it only needs to operate on a part of the structure</i> is badly designed.<p>I think this was a sensible statement, especially in context; I strongly agree that &quot;this is behind a lot of long-term maintenance messes&quot;. And lost performance.<p>For encapsulation in Rust, traits are used to abstract and separate concerns, but they don&#x27;t force you to bundle your data into large structures.<p>And encapsulation isn&#x27;t an end in itself. Privacy has its uses (maintaining invariants, minimizing the exposed surface area of a library, etc.) but I find often in OO codebases that encapsulation creates its own problems. There is no substitute for careful data-oriented design; no amount of `private` will prevent your teammates from working around or ripping apart your carefully shrink-wrapped objects.<p>There is certainly some awkwardness in the borrow checker, but also great value.