This commit is contained in:
10 changed files with 257 additions and 0 deletions

View File

@@ -0,0 +1,30 @@
// Напиúите обобûённуĀ функøиĀ largest_by_key<T, F, K>(list: &[T], key: F) -> Option<&T>, где:
// ● F: Fn(&T) -> K,
// ● K: PartialOrd.
// Функøиā должна возвраûатþ ÿлемент с максималþнýм знаùением key(item).
//fn largest_by_key
fn main() {
// Пример из задания
let words = ["apple", "banana", "cherry"];
let longest = largest_by_key(&words, |s| s.len());
println!("{:?}", longest); // Some("banana")
// Дополнительные примеры
let numbers = [1, 42, 3, 100, 5];
let largest_num = largest_by_key(&numbers, |&n| n);
println!("{:?}", largest_num); // Some(100)
struct Person { name: String, age: u32 }
let people = [
Person { name: "Alice".to_string(), age: 30 },
Person { name: "Bob".to_string(), age: 25 },
Person { name: "Charlie".to_string(), age: 35 },
];
let oldest = largest_by_key(&people, |p| p.age);
println!("Oldest: {:?}", oldest.map(|p| &p.name)); // Some("Charlie")
}