В
Rust необычная работа с переменными и памятью. Каждое значение имеет владельца и в один момент времени у значения может быть только один владелец.
Например:
let age = 33;
let age2 = age
println!("{}", age2); // Ок
println!("{}", age); // Ошибка: age нельзя использовать, значением владеет age2
Тоже самое и с передачей значения как параметр функции:
let age = 33;
println!("{}", age); // Ок
print_age(age);
println!("{}", age); /// Ошибка: age больше не владеет значением
fn print_age(age: u32){
println!("{}", age); // Ok, параметр функции теперь владеет значением
}
С одной стороны это очень непривычно, я не встречал такого в других языках программирования.
С другой, это дает гарантию того, что у значения в памяти, в один момент времени есть только один владелец, который может изменять данные. Из-за этого не будет гонок данных, конфликтов и неожиданных изменений.
Буду привыкать..