Why can't we have two mutable references in the same scope?

I do understand why we can’t have a mutable reference while we have many immutable references. However, Is there any examples to explain why we can’t have two mutable references in the same scope?
Is it really unsafe in practice?

fn main() {
    let mut s = String::new();
    let r1 = &mut s;
    let r2 = &mut s;
}

The usual link:

2 Likes