Why did #Rust abandon its initial approach of providing only non-shared mutable objects and reference-counted shared immutable objects? This seems much easier to understand, and in the worst case it reduces to programming with persistent data structures.