I am reading about references in Rust. Below is text snippet from Programming Rust
As long as there are shared references to a value, not even its owner can modify it; the value is locked down. Nobody can modify table while show is working with it. Similarly, if there is a mutable reference to a value, it has exclusive access to the value; you can’t use the owner at all, until the mutable reference goes away. Keeping sharing and mutation fully separate turns out to be essential to memory safety
I have written below code
let mut a = vec![1, 2, 3];
let b = &mut a;
b.push(5);
a.push(4);
Code is compiling with out errors. My understanding is that since variable "b" is mutable reference in scope so a.push should fail with descritpion provided in above text. Kindly correct me if I am wrong