Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗rsSpFtPm 123 of 288 menu
◀ ▶

Параметр-замыкание в Rust

Функция может принимать замыкание через ограничение трейтом и вызывать его внутри. Снаружи видна одна сигнатура, а конкретное тело замыкания подставляют на месте вызова функции.

Удвоим число через параметр-замыкание:

fn apply(f: impl Fn(i32) -> i32, n: i32) -> i32 { f(n) } fn main() { let double = |x| x * 2; let value = apply(double, 6); println!("{}", value); }

Параметр f описан через impl Fn(i32) -> i32: функция ждет любое замыкание с таким видом аргумента и результата. Внутри apply замыкание применяют к числу n, не зная, удвоение это или другое правило.

Тот же параметр подходит для замыкания без захвата и для чтения захваченного числа:

fn apply(f: impl Fn(i32) -> i32, n: i32) -> i32 { f(n) } fn main() { let shift = 3; let add_shift = |x| x + shift; let value = apply(add_shift, 10); println!("{}", value); }

Дано число:

let n: i32 = 8;

Запишите замыкание, которое вычитает единицу из аргумента, передайте его в общую функцию с n и выведите результат.

Дано число:

let base: i32 = 5;

Сделайте замыкание, которое прибавляет base к аргументу, и функцию с двумя параметрами из урока. Выведите ответ для числа 2.

Скажите, что дает запись параметра через ограничение трейтом замыкания вместо отдельной функции на каждый случай.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить