Функция min_by
Функция min_by возвращает минимальный элемент
в итераторе, используя для сравнения
пользовательскую функцию-компаратор. Она
возвращает Option, содержащий минимальный
элемент, или None, если итератор пуст.
Параметром функция принимает замыкание, которое
получает два элемента и возвращает значение
типа Ordering.
Синтаксис
iter.min_by(compare)
Пример
Давайте найдём минимальный элемент в векторе
vec![3, 1, 4, 2, 5], сравнивая элементы
напрямую:
fn main()
{
let res = vec![3, 1, 4, 2, 5].iter().min_by(|a, b| a.cmp(b));
println!("{:?}", res);
}
Результат выполнения кода:
Some(1)
Пример
Давайте найдём минимальный элемент по длине
строки в векторе vec!["abcde", "ab", "abc"]:
fn main()
{
let res = vec!["abcde", "ab", "abc"].iter().min_by(|a, b| a.len().cmp(&b.len()));
println!("{:?}", res);
}
Результат выполнения кода:
Some("ab")
Пример
Давайте найдём минимальный элемент в пустом векторе:
fn main()
{
let res: Option<&i32> = vec![].iter().min_by(|a, b| a.cmp(b));
println!("{:?}", res);
}
Результат выполнения кода:
None
Смотрите также
-
функция
min,
которая возвращает минимальный элемент в итераторе -
функция
max,
которая возвращает максимальный элемент в итераторе -
функция
max_by,
которая возвращает максимальный элемент по критерию -
функция
min_by_key,
которая возвращает минимальный элемент по ключу