I disagree, and I'd be fascinated to hear more of your perspective here.
I love Rust precisely because I can keep extra information out of my head. When I express something with the type system, I can stop tracking it mentally, and just rely on the compiler to keep track of it for me. With dynamic languages, I have to track far more mental state.
If this were permitted, then this example would have use-after-free whenever myvec reallocates its storage. No concurrency needed.
I'm not sure what you have in mind for circular references, but I don't know of any complications with circular references that have anything to do with concurrency.
I love Rust precisely because I can keep extra information out of my head. When I express something with the type system, I can stop tracking it mentally, and just rely on the compiler to keep track of it for me. With dynamic languages, I have to track far more mental state.
"Mutable xor shared" does not have anything to do with concurrency or threads. Here's one example in the Rust Playground: https://play.rust-lang.org/?version=stable&mode=debug&editio...
If this were permitted, then this example would have use-after-free whenever myvec reallocates its storage. No concurrency needed.
I'm not sure what you have in mind for circular references, but I don't know of any complications with circular references that have anything to do with concurrency.