Поиск наименьшего числа в векторе в Rust: подробное руководство

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

Методы:

Метод 1: использование функций iterи min

fn find_smallest_number(vec: &[i32]) -> Option<i32> {
    vec.iter().min().cloned()
}

Объяснение: Этот метод использует функцию iterдля создания итератора по элементам вектора, а затем использует функцию minдля поиска минимального значения. Метод clonedиспользуется для возврата минимального значения в виде Option<i32>.

Метод 2. Использование цикла

fn find_smallest_number(vec: &[i32]) -> Option<i32> {
    if vec.is_empty() {
        return None;
    }

    let mut smallest = vec[0];
    for &num in vec.iter() {
        if num < smallest {
            smallest = num;
        }
    }

    Some(smallest)
}

Объяснение: Этот метод перебирает элементы вектора с помощью цикла и сравнивает каждый элемент с текущим наименьшим значением. Если найдено меньшее значение, оно присваивается переменной smallest. Наконец, наименьшее значение возвращается как Option<i32>.

Метод 3: использование функции fold

fn find_smallest_number(vec: &[i32]) -> Option<i32> {
    vec.iter().fold(None, |min, &num| {
        Some(match min {
            Some(value) if value < num => value,
            _ => num,
        })
    })
}

Объяснение: Этот метод использует функцию fold, которая применяет заданное замыкание к каждому элементу итератора. Замыкание сравнивает текущее минимальное значение (min) с текущим элементом (num) и возвращает меньшее значение. Наименьшее значение возвращается как Option<i32>.