Результат замыкания в Rust
Последнее выражение замыкания становится его результатом без отдельного слова возврата. Так же устроены блоки и обычные функции: значение последней строки отдают вызывающему коду.
Короткое тело из одного выражения пишут сразу после черт:
let max = |a: i32, b: i32| if a > b { a } else { b };
println!("{}", max(3, 7));
Точка с запятой после последнего выражения в скобках превращает его в команду без значения. Тогда у замыкания нет результата, и такой код не собирается, если тип ждут число:
let broken = |n: i32| {
n + 1;
};
Запишите abs_diff с двумя параметрами
i32, которое возвращает модуль разности,
и выведите результат для 2 и 5.
Даны переменные:
let low = 1;
let high = 9;
Объявите mid, которое возвращает
среднее двух аргументов как целое деление
суммы на 2, и выведите результат
для low и high.
Дан следующий код:
let unit = |n: i32| {
println!("{}", n);
n
};
Скажите, есть ли у unit числовой
результат после выполнения тела.