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

Вложенные структуры

Вложенные структуры в Rust - это структуры, которые содержат в качестве полей другие структуры. Такой подход позволяет создавать иерархические модели данных, где одна структура описывает составной объект, а вложенные структуры описывают его отдельные части. Вложенной может быть как обычная структура, так и кортежная структура. Поля вложенной структуры доступны через цепочку точек: сначала указывается поле внешней структуры, затем поле вложенной структуры.

Синтаксис

struct Outer { inner: Inner, value: i32, } struct Inner { field: i32, }

Пример

Давайте создадим внешнюю структуру Point и вложенную структуру Coord, а затем обратимся к полю вложенной структуры:

struct Coord { x: i32, y: i32, } struct Point { coord: Coord, label: String, } fn main() { let p = Point { coord: Coord { x: 1, y: 2 }, label: String::from("A"), }; println!("{}", p.coord.x); println!("{}", p.coord.y); println!("{}", p.label); }

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

1 2 "A"

Пример

Давайте создадим две вложенные структуры Coord и Size внутри структуры Rect и выведем значения их полей:

struct Coord { x: i32, y: i32, } struct Size { width: i32, height: i32, } struct Rect { pos: Coord, size: Size, } fn main() { let r = Rect { pos: Coord { x: 0, y: 0 }, size: Size { width: 10, height: 20 }, }; println!("{}", r.pos.x); println!("{}", r.pos.y); println!("{}", r.size.width); println!("{}", r.size.height); }

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

0 0 10 20

Пример

Давайте используем кортежную структуру в качестве вложенного поля и выведем её элементы:

struct Pair(i32, i32); struct Container { pair: Pair, name: String, } fn main() { let c = Container { pair: Pair(3, 4), name: String::from("box"), }; println!("{}", c.pair.0); println!("{}", c.pair.1); println!("{}", c.name); }

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

3 4 "box"

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

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