reference in Rust

References allow you to refer to some value without taking ownership of it. 
* At any given time, you can have either one mutable reference or any number of immutable references.
* References must always be valid.

You can have only one mutable reference to a particular piece of data in a particular scope. The benefit of having this restriction is that Rust can prevent data races at compile time. We also cannot have a mutable reference while we have an immutable one. Users of an immutable reference don’t expect the values to suddenly change out from under them! However, multiple immutable references are okay because no one who is just reading the data has the ability to affect anyone else reading of the data.