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

Трейт PartialEq

Трейт PartialEq определяет возможность сравнения двух значений на равенство. Он предоставляет методы eq и ne, которые лежат в основе операторов == и != соответственно. Параметром метод eq принимает ссылку на другое значение того же типа, с которым происходит сравнение, и возвращает true, если значения равны, и false в противном случае.

Трейт PartialEq называется частичным, потому что для некоторых типов (например, с плавающей точкой f64) равенство может не выполняться для значения NaN: NaN != NaN возвращает true. Для полного равенства, которое подчиняется рефлексивности, используется трейт Eq.

Синтаксис

trait PartialEq<Rhs = Self> { fn eq(&self, other: &Rhs) -> bool; fn ne(&self, other: &Rhs) -> bool { ... } }

Пример

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

fn main() { let a = 5; let b = 5; let res = a == b; println!("{}", res); }

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

true

Пример

Давайте сравним две строки с помощью оператора !=:

fn main() { let a = "abcde"; let b = "12345"; let res = a != b; println!("{}", res); }

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

true

Пример

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

struct Point { x: i32, y: i32, } impl PartialEq for Point { fn eq(&self, other: &Self) -> bool { self.x == other.x && self.y == other.y } } fn main() { let p1 = Point { x: 1, y: 2 }; let p2 = Point { x: 1, y: 2 }; let res = p1 == p2; println!("{}", res); }

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

true

Пример

Давайте проверим поведение PartialEq для специального значения NaN:

fn main() { let a = f64::NAN; let res = a == a; println!("{}", res); }

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

false

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

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