&gt;  I thought that was one of the most fascinating parts - Rust&#x27;s borrow-checker enforces the Law of Demeter and Principle of Least Privilege as a side-effect.<p>I really don&#x27;t agree with this comment (I program in Rust a lot). Borrowck is a godsend in many ways, but this is a weakness (that can be improved!). It prevents things like `self.mutate_my_foo(self.access_my_bar())`. There are workarounds for the problems this presents, but they should have to be.<p>It is _great_ that borrowck helps you control aliasing and mutation of state. It is _frustrating_ that borrowck can&#x27;t distinguish a borrow of `self.foo` from a borrow of `self`.<p>&quot;Law of Demeter&quot; is enforced through privacy - as the `self` in the example above shows, these are all happening within the private scope of the &#x27;object.&#x27;