Empréstimos Compartilhados e Únicos
O Rust coloca restrições nas formas como você pode emprestar valores:
- Você pode ter um ou mais valores
&Ta qualquer momento, ou - Você pode ter exatamente um 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}"); }
- O código acima não compila porque
aé emprestado como mutável (através dec) e como imutável (através deb) ao mesmo tempo. - Mova a instrução
println!parabantes do escopo que introduzcpara fazer o código compilar. - Após essa alteração, o compilador percebe que
bsó é usado antes do novo empréstimo mutável deaatravés dec. Este é um recurso do verificador de empréstimo (borrow checker) chamado “tempos de vida não lexicais”.