Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗rsSpPtSt 75 of 288 menu
◀ ▶

Разбор структуры в Rust

Когда справа лежит структура, слева можно перечислить ее поля в фигурных скобках. Каждое имя сразу становится переменной с тем значением, которое было в поле. Так не нужно обращаться к полям через точку после проверки типа.

Если удобнее другое имя переменной, после двоеточия пишут новое имя. Запись age: years забирает поле age в переменную years.

Разберем запись о пользователе:

struct User { name: String, age: u32, } fn main() { let user = User { name: String::from("Ann"), age: 20, }; let User { name, age: years } = user; println!("{} {}", name, years); }

На экране имя и число лет. Поле name попало в одноименную переменную, а age открылась как years.

Разбор структуры можно сочетать с match, когда тип приходит из перечисления или контейнера:

struct Point { x: i32, y: i32, } fn main() { let p = Point { x: 1, y: 2 }; let label = match p { Point { x: 0, y } => "axis", Point { x, y: 0 } => "axis", Point { .. } => "plane", }; println!("{}", label); }

Дана структура:

struct Book { title: String, pages: u32, } let book = Book { title: String::from("Rust"), pages: 400, };

Разберите book на title и pages и выведите оба значения.

Дана структура:

struct Pair { left: i32, right: i32, } let pair = Pair { left: 3, right: 4 };

Разберите с переименованием: left: a и right: b, выведите сумму a и b.

Скажите, что означает запись Point { .. } в образце структуры.

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