Захват переменной замыканием в Rust
Замыкание может читать переменную, объявленную выше в той же области. Такое чтение называют захватом окружения: короткая функция использует значение, которое уже лежит снаружи.
Для простого числа тело умножает аргумент на внешний множитель, а снаружи переменная остается на месте:
let factor = 3;
let scale = |n: i32| n * factor;
println!("{}", scale(4));
println!("{}", factor);
На экране 12 и снова 3. После вызова
имя factor по-прежнему доступно, потому
что замыкание не забирало владение числом.
Текст снаружи читают через ссылку, пока не
попросят перенос:
let label = "ok";
let check = |text: &str| text == label;
println!("{}", check("ok"));
Дано число:
let offset = 10;
Объявите shift с одним i32,
которое прибавляет offset к аргументу,
и выведите результат для 5.
Даны переменные:
let min = 2;
let max = 8;
Запишите in_range с параметром i32,
которое проверяет, что значение не меньше
min и не больше max, и выведите
результат для 5.
Дан следующий код:
let base = 1;
let add_base = |n: i32| n + base;
let sum = add_base(4);
Скажите, какое число окажется в sum.