Упражнение: Управление лифтом
Мы создадим структуру данных, которая представляет событие в системе управления лифтом. Вы сами определите типы и функции для создания различных событий. Используйте #[derive(Debug)], чтобы типы можно было выводить через {:?}.
Это упражнение требует только создать структуры данных и заполнить их так, чтобы main выполнялся без ошибок. Следующая часть курса расскажет, как извлекать данные из этих структур.
// Copyright 2023 Google LLC
// SPDX-License-Identifier: Apache-2.0
#![allow(dead_code)]
#[derive(Debug)]
/// Событие в системе лифта, на которое должен реагировать контроллер.
enum Event {
// TODO: добавьте необходимые варианты
}
/// Направление движения.
#[derive(Debug)]
enum Direction {
Up,
Down,
}
/// Кабина прибыла на указанный этаж.
fn car_arrived(floor: i32) -> Event {
todo!()
}
/// Двери кабины открылись.
fn car_door_opened() -> Event {
todo!()
}
/// Двери кабины закрылись.
fn car_door_closed() -> Event {
todo!()
}
/// Была нажата кнопка направления в холле лифта на указанном этаже.
fn lobby_call_button_pressed(floor: i32, dir: Direction) -> Event {
todo!()
}
/// Была нажата кнопка этажа в кабине лифта.
fn car_floor_button_pressed(floor: i32) -> Event {
todo!()
}
fn main() {
println!(
"A ground floor passenger has pressed the up button: {:?}",
lobby_call_button_pressed(0, Direction::Up)
);
println!("The car has arrived on the ground floor: {:?}", car_arrived(0));
println!("The car door opened: {:?}", car_door_opened());
println!(
"A passenger has pressed the 3rd floor button: {:?}",
car_floor_button_pressed(3)
);
println!("The car door closed: {:?}", car_door_closed());
println!("The car has arrived on the 3rd floor: {:?}", car_arrived(3));
}
This slide and its sub-slides should take about 15 minutes.
- Если студенты спросят про
#![allow(dead_code)]в начале упражнения: он нужен, потому что единственное, что мы делаем с типомEvent, — это выводим его. Из-за особенности проверки неиспользуемого кода компилятор считает код неиспользуемым. Для целей этого упражнения это можно игнорировать.