Читаем Rust на примерах полностью

println!("координаты точки: ({}, {})", point.x, point.y);

// Создадим новую точку используя синтаксис обновления структуры и нашу

// существующую точку

let bottom_right = Point { x: 5.2, ..point };

// `bottom_right.y` будет тем же самым, что и `point.y`, так как мы взяли

// это поле из `point`

println!("вторая точка: ({}, {})", bottom_right.x, bottom_right.y);

// Деструктурируем структуру при помощи `let`

let Point { x: top_edge, y: left_edge } = point;

let _rectangle = Rectangle {

// создание структуры также является выражением

top_left: Point { x: left_edge, y: top_edge },

bottom_right: bottom_right,

};

// Создадим unit-структуру

let _nil = Nil;

// Создадим кортежную структуру

let pair = Pair(1, 0.1);

// Доступ к полям кортежной структуры

println!("pair содержит {:?} и {:?}", pair.0, pair.1);

// Деструктурируем кортежную структуру

let Pair(integer, decimal) = pair;

println!("pair содержит {:?} и {:?}", integer, decimal);

}

הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

<p id="Задание_5"><strong><a l:href="#Задание_5">Задание</a></strong></p>

   1. Добавьте функцию rect_area, которая рассчитывает площадь прямоугольника (попробуйте использовать "деструктуризацию" (разбор на части)).

   2. Добавьте функцию square, которая принимает в качестве аргументов Point и f32, а возвращает Rectangle, левый нижний угол которого соответствует Point, а ширина и высота соответствуют f32.

<p id="Смотрите_также_7"><strong><a l:href="#Смотрите_также_7">Смотрите также:</a></strong></p>

Атрибуты, времена жизни и деструктуризация

<p id="Перечисления"><strong><a l:href="#Перечисления">Перечисления</a></strong></p>

Ключевое слово enum позволяет создавать тип данных, который представляет собой один из нескольких возможных вариантов. Любой вариант, действительный как struct, также действителен как enum.

// Создаём `enum` для классификации web-событий. Обратите внимание

// как имена и информация о типе определяют вариант:

// `PageLoad != PageUnload` и `KeyPress(char) != Paste(String)`.

// Все они разные и независимые.

enum WebEvent {

// `enum` может быть как `unit-подобным`,

PageLoad,

PageUnload,

// так и кортежной структурой,

KeyPress(char),

Paste(String),

// или c-подобной структурой.

Click { x: i64, y: i64 },

}

// Функция, которая получает на вход `WebEvent` и ничего не возвращает.

fn inspect(event: WebEvent) {

match event {

WebEvent::PageLoad => println!("страница загружена"),

WebEvent::PageUnload => println!("страница выгружена"),

// Извлечём `c` из `enum`.

WebEvent::KeyPress(c) => println!("нажата '{}'.", c),

Перейти на страницу:

Похожие книги

Компьютерные сети. 6-е изд.
Компьютерные сети. 6-е изд.

Перед вами шестое издание самой авторитетной книги по современным сетевым технологиям, написанное признанным экспертом Эндрю Таненбаумом в соавторстве со специалистом компании Google Дэвидом Уэзероллом и профессором Чикагского университета Ником Фимстером. Первая версия этого классического труда появилась на свет в далеком 1980 году, и с тех пор каждое издание книги неизменно становилось бестселлером. В книге последовательно изложены основные концепции, определяющие современное состояние компьютерных сетей и тенденции их развития. Авторы подробно объясняют устройство и принципы работы аппаратного и программного обеспечения, рассматривают все аспекты и уровни организации сетей — от физического до прикладного. Изложение теоретических принципов дополняется яркими, показательными примерами функционирования интернета и компьютерных сетей различного типа. Большое внимание уделяется сетевой безопасности. Шестое издание полностью переработано с учетом изменений, произошедших в сфере сетевых технологий за последние годы, и, в частности, освещает такие технологии, как DOCSIS, 4G и 5G, беспроводные сети стандарта 802.11ax, 100-гигабитные сети Ethernet, интернет вещей, современные транспортные протоколы CUBIC TCP, QUIC и BBR, программно-конфигурируемые сети и многое другое.

Дэвид Уэзеролл , Ник Фимстер , Эндрю Таненбаум

Учебные пособия, самоучители