Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Структуры

Структура - это именованный структурный тип, определённый с помощью ключевого слова struct.

Объявление структуры определяет данное имя в пространстве имён типов модуля или блока, где она находится.

Пример элемента struct и его использования:

#![allow(unused)]
fn main() {
struct Point {x: i32, y: i32}
let p = Point {x: 10, y: 11};
let px: i32 = p.x;
}

Кортежная структура - это именованный кортежный тип, который также определяется с помощью ключевого слова struct. Помимо определения типа, она также определяет конструктор с тем же именем в пространстве имён значений. Конструктор - это функция, которую можно вызвать для создания нового экземпляра структуры. Например:

#![allow(unused)]
fn main() {
struct Point(i32, i32);
let p = Point(10, 11);
let px: i32 = match p { Point(x, _) => x };
}

Единичная структура - это структура без каких-либо полей, определяемая полным отсутствием списка полей. Такая структура неявно определяет константу своего типа с тем же именем. Например:

#![allow(unused)]
fn main() {
struct Cookie;
let c = [Cookie, Cookie {}, Cookie, Cookie {}];
}

эквивалентно

#![allow(unused)]
fn main() {
struct Cookie {}
const Cookie: Cookie = Cookie {};
let c = [Cookie, Cookie {}, Cookie, Cookie {}];
}

Точное расположение структуры в памяти не специфицировано. Можно указать конкретное расположение с помощью атрибута repr.