Замыкание
Замыкание в Rust - это анонимная функция, которую можно сохранить в переменную или передать в другую функцию. В отличие от обычных функций, замыкания могут захватывать значения из окружающей области видимости. Синтаксис замыкания использует вертикальные черты | для параметров и фигурные скобки для тела. Параметрами замыкание принимает значения, которые будут использованы в его теле.
Синтаксис
|параметры| { тело }
Пример
Давайте создадим простое замыкание, которое складывает два числа:
fn main()
{
let add = |a, b| a + b;
let res = add(2, 3);
println!("{}", res);
}
Результат выполнения кода:
5
Пример
Давайте создадим замыкание, которое захватывает переменную из окружающего контекста:
fn main()
{
let x = 10;
let add_x = |y| x + y;
let res = add_x(5);
println!("{}", res);
}
Результат выполнения кода:
15
Пример
Давайте передадим замыкание в функцию высшего порядка:
fn apply<F: Fn(i32) -> i32>(f: F, value: i32) -> i32
{
f(value)
}
fn main()
{
let double = |x| x * 2;
let res = apply(double, 7);
println!("{}", res);
}
Результат выполнения кода:
14