Préstamos compartidos y únicos
Rust limita las formas en que se pueden tomar prestados valores:
- Puedes tener uno o varios valores
&Ten un momento dado, o - puedes tener exactamente un valor
&mut T.
fn main() { let mut a: i32 = 10; let b: &i32 = &a; { let c: &mut i32 = &mut a; *c = 20; } println!("a: {a}"); println!("b: {b}"); }
- El código anterior no se compila porque
ase toma prestada como mutable (a través dec) y como inmutable (a través deb) al mismo tiempo. - Mueve la instrucción
println!debantes del ámbito que introducecpara que el código compile. - Después de ese cambio, el compilador se da cuenta de que
bsolo se usa antes del nuevo préstamo mutable deaa través dec. Se trata de una función del verificador de préstamos denominada “tiempo de vida no léxico”.