I'm in the process of learning Rust, and my biggest hurdle so far has been that the terminology doesn't seem to match the intent. In my opinion (and a few others too, there are various discussions and blog posts about the design decisions) 'mutable' and 'immutable' would be better understood as 'exclusive' and 'shared'. Exclusive access is a requirement for mutability, yet we express that a variable is mutable, not that it we have exclusive ownership. We have Cell<T> and RefCell<T> which seem to be exempt from the rules of mutability, and it's hard to understand why Rust has such rules when it allows them to be broken. Most tutorials give examples of how to use these types, but it took me a long time to understand how the restrictions on these types make it safe to break the rules