Вложенные структуры
Вложенные структуры в 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,
которая позволяет извлекать значения из вложенных структур