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

Деструктуризация структуры

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

Синтаксис

let StructName { field1, field2 } = struct_value;

Также можно переименовывать поля при деструктуризации с помощью конструкции field: new_name:

let StructName { field1: a, field2: b } = struct_value;

Пример

Давайте объявим структуру Point с двумя полями и деструктурируем её в переменные:

struct Point { x: i32, y: i32, } fn main() { let p = Point { x: 1, y: 2 }; let Point { x, y } = p; println!("x = {}, y = {}", x, y); }

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

x = 1, y = 2

Пример

Давайте деструктурируем структуру с переименованием полей в новые переменные:

struct Point { x: i32, y: i32, } fn main() { let p = Point { x: 1, y: 2 }; let Point { x: a, y: b } = p; println!("a = {}, b = {}", a, b); }

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

a = 1, b = 2

Пример

Давайте деструктурируем структуру прямо в параметре функции:

struct Point { x: i32, y: i32, } fn print_point(Point { x, y }: Point) { println!("x = {}, y = {}", x, y); } fn main() { let p = Point { x: 1, y: 2 }; print_point(p); }

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

x = 1, y = 2

Пример

Давайте используем деструктуризацию в выражении match для разбора структуры:

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

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

x = 1, y = 2

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

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