В 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>
.