Combining aliasing and mutation can cause some trouble
- If an aliased data got deallocated, we have dangling
- By mutating the aliased data can invalidate runtime properties expected by the other variables
- concurrency access for shared mutable data can cause data race
Rust decides to ban all simultaneous aliasing and mutation without use extra tools such as interior mutability. That is why Rust’s mutable references (also called exclusive references) are mutually exclusive to immutable references (also called shared references).