Существует три типа структур, которые можно создать с помощью ключевого слова struct:
// Единичная структура
struct Nil;
// Кортежная структура
struct Pair(i32, f64);
// Структура с двумя полями
struct Point {
x: f64,
y: f64,
}
// Структуры могут быть использованы как поля другой структуры
#[allow(dead_code)]
struct Rectangle {
p1: Point,
p2: Point,
}
fn main() {
// Создаем связь со структурой `Point`
let point: Point = Point { x: 0.3, y: 0.4 };
// Получаем доступ к полям структуры `point`
println!("point coordinates: ({}, {})", point.x, point.y);
// Деструктурируем `point` создавая связь с помощью `let`
let Point { x: my_x, y: my_y } = point;
let _rectangle = Rectangle {
// инициализация стуктуры так же является выражением
p1: Point { x: my_y, y: my_x },
p2: point,
};
// Создаем связь с единичной структурой
let _nil = Nil;
// Создаем связь с кортежной структурой
let pair = Pair(1, 0.1);
// Деструктурируем кортежную структуру
let Pair(integer, decimal) = pair;
println!("pair contains {:?} and {:?}", integer, decimal);
}rect_area, которая рассчитывает площадь прямоугольника. (попробуйте использовать "деструктуризацию" (разбор на части) ). square, которая принимает в качестве аргументов Point и f32, а возвращает Rectangle with its lower left corner on the point, and a width and height corresponding to the f32.