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

Сравнение структур

В Rust структуры можно сравнивать друг с другом с помощью операторов == и !=, если для них реализован трейт PartialEq. Чаще всего этот трейт не пишут вручную, а выводят автоматически с помощью атрибута derive. В этом случае сравнение происходит по всем полям структуры: два экземпляра считаются равными, если равны значения всех их полей.

Синтаксически сравнение структур не отличается от сравнения примитивных типов: используется оператор == или !=. Операторами сравнения принимаются два значения одного и того же типа структуры.

Синтаксис

#[derive(PartialEq)] struct MyStruct { field1: Type1, field2: Type2, } let a = MyStruct { field1: val1, field2: val2 }; let b = MyStruct { field1: val3, field2: val4 }; let res = a == b;

Пример

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

#[derive(PartialEq)] struct Point { x: i32, y: i32, } fn main() { let a = Point { x: 1, y: 2 }; let b = Point { x: 1, y: 2 }; let res = a == b; println!("{}", res); }

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

true

Пример

А теперь сравним два экземпляра структуры Point с разными значениями полей:

#[derive(PartialEq)] struct Point { x: i32, y: i32, } fn main() { let a = Point { x: 1, y: 2 }; let b = Point { x: 3, y: 4 }; let res = a == b; println!("{}", res); }

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

false

Пример

Оператор != работает как отрицание оператора ==. Давайте проверим неравенство двух разных экземпляров структуры:

#[derive(PartialEq)] struct Point { x: i32, y: i32, } fn main() { let a = Point { x: 1, y: 2 }; let b = Point { x: 3, y: 4 }; let res = a != b; println!("{}", res); }

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

true

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

  • атрибут derive,
    который автоматически реализует трейты для структур
  • доступ к полям структуры,
    который позволяет читать и изменять значения полей
  • блок impl,
    который добавляет методы и функции к структуре
  • деструктуризация,
    которая разбирает структуру на отдельные поля
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить