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

Атрибут #[derive]

Атрибут #[derive] позволяет компилятору автоматически сгенерировать реализацию указанных типажей для структуры или перечисления. Параметром атрибут принимает список типажей, которые нужно реализовать. Это избавляет разработчика от необходимости писать шаблонный код вручную.

Синтаксис

#[derive(Trait1, Trait2, ...)] struct MyStruct { // поля структуры }

Пример

Давайте реализуем типаж Debug для структуры Point с помощью атрибута #[derive]:

#[derive(Debug)] struct Point { x: i32, y: i32, } fn main() { let p = Point { x: 1, y: 2 }; println!("{:?}", p); }

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

Point { x: 1, y: 2 }

Пример

Давайте реализуем типажи Clone и PartialEq для структуры Pair:

#[derive(Clone, PartialEq)] struct Pair { a: i32, b: i32, } fn main() { let p1 = Pair { a: 1, b: 2 }; let p2 = p1.clone(); let res = p1 == p2; println!("{}", res); }

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

true

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

  • ключевое слово let,
    которое используется для привязки значений к переменным
  • ключевое слово fn,
    которое объявляет функции и методы
  • ключевое слово type,
    которое создаёт псевдонимы для типов
  • ключевое слово ref,
    которое создаёт ссылку при привязке значения
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить