РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
566 of 1245 menu

Трейт Ord

Трейт Ord представляет полное упорядочение для типа. Он позволяет сравнивать значения с помощью операторов <, >, <= и >=. Трейт Ord является подтрейтом PartialOrd и Eq, поэтому тип, реализующий Ord, обязан также реализовывать PartialOrd, Eq и PartialEq. Метод cmp принимает ссылку на другое значение того же типа и возвращает значение перечисления Ordering: Less, Equal или Greater.

Синтаксис

impl Ord for Type { fn cmp(&self, other: &Self) -> Ordering { // ... } }

Пример

Давайте сравним два числа с помощью метода cmp:

use std::cmp::Ordering; fn main() { let a = 5; let b = 10; let res = a.cmp(&b); match res { Ordering::Less => println!("Less"), Ordering::Equal => println!("Equal"), Ordering::Greater => println!("Greater"), } }

Результат выполнения кода:

Less

Пример

Давайте отсортируем вектор чисел. Метод sort использует трейт Ord для упорядочивания элементов:

fn main() { let mut vec = vec![3, 1, 4, 1, 5, 9, 2, 6]; vec.sort(); println!("{:?}", vec); }

Результат выполнения кода:

[1, 1, 2, 3, 4, 5, 6, 9]

Пример

Давайте реализуем трейт Ord для собственной структуры Point и сравним две точки:

use std::cmp::Ordering; #[derive(Debug, PartialEq, Eq)] struct Point { x: i32, y: i32, } impl PartialOrd for Point { fn partial_cmp(&self, other: &Self) -> Option<Ordering> { Some(self.cmp(other)) } } impl Ord for Point { fn cmp(&self, other: &Self) -> Ordering { (self.x, self.y).cmp(&(other.x, other.y)) } } fn main() { let p1 = Point { x: 1, y: 2 }; let p2 = Point { x: 3, y: 4 }; let res = p1.cmp(&p2); match res { Ordering::Less => println!("Less"), Ordering::Equal => println!("Equal"), Ordering::Greater => println!("Greater"), } }

Результат выполнения кода:

Less

Смотрите также

  • трейт PartialOrd,
    который задаёт частичное упорядочение
  • трейт Eq,
    который задаёт отношение эквивалентности
  • трейт PartialEq,
    который позволяет сравнивать значения на равенство
  • трейт Hash,
    который позволяет хешировать значения
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить