Rust — функции высшего порядка

Опубликовано: 18 Февраля, 2023

В Rust у нас есть концепция функций высшего порядка, которая передает функцию другой функции после того, как переменная сохранена в другой функции. Чтобы определить функцию в Rust, мы используем ключевое слово fn.

Синтаксис:

fn <function name>()

{

}

Функции высшего порядка в Rust — это функции, которые принимают более одной функции и производят больше полезных функций. как только функции сохраняются внутри переменной, они могут передавать функцию из одной функции в другую.

Для определения функций более высокого порядка нам нужно импортировать трейты:

  • Карта принимает «внутренние» значения, которые могут быть отображены переменными.
  • sum() используется для итерации итераций.
  • filter() — это структура, которая фильтрует элементы итератора.
  • take_while() — это структура, которая принимает итератор, а затем возвращает логическое значение.

Пример:

Rust




// Rust code for Higher order function
fn check_odd(num: u32) -> bool {
    num % 2 == 1
}
  
fn main() {
let upper_limit = 10;
    println!("Sum of all squared numbers under {}",upper_limit);
      
    let squared_odd_numbers: u32 =
        (0..).map(|num| num * num)                             
             .take_while(|&num_squared| num_squared < upper_limit) 
             .filter(|&num_squared| check_odd(num_squared))    
             .sum();                                     
    println!("Value (functional approach): {}", squared_odd_numbers);
}

Выход:

Объяснение:

В этом примере мы использовали функциональный подход при проверке условия. Здесь мы объявили upper_limit и инициализировали значение squared_odd_numbers (имеющее 32-битное значение) и передали их внутри карты с условием, что если все числа в квадрате ниже верхнего предела, мы будем фильтровать их (используя условие num_squared), а затем это суммировало бы их. Наконец, мы печатаем значение на экране.