Метод cmp
Метод cmp сравнивает текущий итератор с другим итератором
и возвращает значение типа Ordering, указывающее,
какой из них меньше, больше или равен. Параметром метод принимает
другой итератор, с которым нужно сравнить текущий. Сравнение
происходит поэлементно до первого несовпадения или до окончания
одного из итераторов.
Если все элементы совпадают, но первый итератор короче,
он считается меньшим. Метод доступен для итераторов,
элементы которых реализуют типаж Ord.
Синтаксис
iter1.cmp(iter2)
Пример
Давайте сравним два итератора, которые отличаются на втором элементе, и выведем результат:
use std::cmp::Ordering;
fn main()
{
let iter1 = vec![1, 2, 3].into_iter();
let iter2 = vec![1, 4, 3].into_iter();
match iter1.cmp(iter2)
{
Ordering::Less => println!("Less"),
Ordering::Greater => println!("Greater"),
Ordering::Equal => println!("Equal"),
}
}
Результат выполнения кода:
Less
Пример
Давайте сравним два одинаковых итератора:
use std::cmp::Ordering;
fn main()
{
let iter1 = vec!["a", "b", "c"].into_iter();
let iter2 = vec!["a", "b", "c"].into_iter();
match iter1.cmp(iter2)
{
Ordering::Less => println!("Less"),
Ordering::Greater => println!("Greater"),
Ordering::Equal => println!("Equal"),
}
}
Результат выполнения кода:
Equal
Пример
Давайте сравним итератор, который короче, но совпадает по всем элементам с началом второго итератора:
use std::cmp::Ordering;
fn main()
{
let iter1 = vec![1, 2].into_iter();
let iter2 = vec![1, 2, 3].into_iter();
match iter1.cmp(iter2)
{
Ordering::Less => println!("Less"),
Ordering::Greater => println!("Greater"),
Ordering::Equal => println!("Equal"),
}
}
Результат выполнения кода:
Less