Метод max_by_key
Метод max_by_key возвращает последний элемент итератора,
для которого функция-ключ вернула максимальное значение.
Если элементов с максимальным ключом несколько, метод
вернёт последний из них. Параметром метод принимает функцию,
которая извлекает из элемента ключ для сравнения.
Метод возвращает Option: Some с элементом,
если итератор не пуст, и None в противном случае.
Синтаксис
iter.max_by_key(key_fn)
Пример
Давайте найдём элемент вектора с максимальной длиной строки:
fn main()
{
let vec = vec!["a", "abc", "ab", "abcd"];
let res = vec.iter().max_by_key(|s| s.len());
println!("{:?}", res);
}
Результат выполнения кода:
Some("abcd")
Пример
Давайте найдём число с максимальным остатком от деления на 3:
fn main()
{
let vec = vec![1, 2, 3, 4, 5];
let res = vec.iter().max_by_key(|x| *x % 3);
println!("{:?}", res);
}
Результат выполнения кода:
Some(2)
Пример
Давайте применим метод к пустому вектору:
fn main()
{
let vec: Vec<i32> = vec![];
let res = vec.iter().max_by_key(|x| *x);
println!("{:?}", res);
}
Результат выполнения кода:
None
Смотрите также
-
метод
max_by,
который возвращает элемент с максимальным значением по функции сравнения -
метод
max,
который возвращает максимальный элемент итератора -
метод
min_by_key,
который возвращает элемент с минимальным значением ключа -
метод
Iterator,
класс, которому принадлежит данный метод