Функция min_by_key
Функция min_by_key возвращает минимальный элемент
итератора. В отличие от функции min, которая
сравнивает сами элементы, min_by_key сравнивает
значения ключей, вычисляемых для каждого элемента с
помощью переданной функции. Параметром функция принимает
замыкание, которое для каждого элемента возвращает ключ
сравнения. Возвращается сам минимальный элемент, а не его
ключ.
Функция возвращает None, если итератор пуст,
и Some с минимальным элементом в противном
случае.
Синтаксис
iter.min_by_key(|item| key)
Пример
Давайте найдём строку с наименьшей длиной в векторе
["abcde", "ab", "abcd", "a"], используя в
качестве ключа длину строки:
fn main()
{
let vec = vec!["abcde", "ab", "abcd", "a"];
let res = vec.iter().min_by_key(|s| s.len());
println!("{:?}", res);
}
Результат выполнения кода:
Some("a")
Пример
Давайте найдём минимальное число по модулю в векторе
[-5, 3, -1, 4], используя в качестве ключа
абсолютное значение:
fn main()
{
let vec = vec![-5, 3, -1, 4];
let res = vec.iter().min_by_key(|n| n.abs());
println!("{:?}", res);
}
Результат выполнения кода:
Some(-1)
Пример
Давайте найдём кортеж с наименьшим вторым элементом
в векторе [(1, 5), (2, 3), (3, 4)]:
fn main()
{
let vec = vec![(1, 5), (2, 3), (3, 4)];
let res = vec.iter().min_by_key(|t| t.1);
println!("{:?}", res);
}
Результат выполнения кода:
Some((2, 3))
Смотрите также
-
функция
min,
которая возвращает минимальный элемент итератора -
функция
max_by_key,
которая возвращает максимальный элемент по ключу -
функция
min_by,
которая возвращает минимальный элемент по функции сравнения -
функция
max,
которая возвращает максимальный элемент итератора