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,
который добавляет методы и функции к структуре -
связанные функции,
которые вызываются через имя структуры