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

Unit-структура

Unit-структура - это структура, у которой нет ни одного поля. Она объявляется с помощью ключевого слова struct, имени и пустых круглых скобок. Такая структура создаёт ровно одно значение, которое также называется unit-значением. Unit-структуры часто применяются для реализации типажей, когда сама структура не должна хранить данные, а служит только маркером или пространством имён для связанных функций.

Синтаксис

struct Name;

Значение unit-структуры создаётся так:

let value = Name;

Пример

Объявим unit-структуру Marker и создадим её значение:

struct Marker; fn main() { let res = Marker; println!("{:?}", res); }

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

Marker

Пример

Unit-структуру удобно использовать для реализации типажа. Реализуем типаж Greet для структуры English:

trait Greet { fn hello(&self) -> &str; } struct English; impl Greet for English { fn hello(&self) -> &str { "Hello" } } fn main() { let lang = English; let res = lang.hello(); println!("{}", res); }

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

"Hello"

Пример

Unit-структура может выступать пространством имён для связанных функций. Создадим структуру Math со связанной функцией square:

struct Math; impl Math { fn square(x: i32) -> i32 { x * x } } fn main() { let res = Math::square(5); println!("{}", res); }

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

25

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

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