Why does this compile?
fn main() {
let mut x = vec![1, 2, 3];
let y = &mut x;
let z: &mut _ = y;
let xx = y;
}
when z reborrow x in this statement let z: &mut _ = y; there already exist a mutable reference to x in y. Doesnt this violate rust principle?