Вправа: події в ліфті
Ми створимо структуру даних для представлення події в системі керування ліфтом. Ви самі визначаєте типи та функції для створення різних подій. Використовуйте #[derive(Debug)], щоб дозволити форматування типів за допомогою {:?}.
У цій вправі потрібно лише створити і заповнити структури даних так, щоб main працював без помилок. Наступна частина курсу буде присвячена отриманню даних з цих структур.
#[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!(
"Пасажир першого поверху натиснув кнопку вгору: {:?}",
lobby_call_button_pressed(0, Direction::Up)
);
println!("Кабіна ліфта заїхала на перший поверх: {:?}", car_arrived(0));
println!("Двері у кабіні ліфта відчинилися: {:?}", car_door_opened());
println!(
"Пасажир натиснув кнопку 3-го поверху: {:?}",
car_floor_button_pressed(3)
);
println!("Двері у кабіні ліфта зачинилися: {:?}", car_door_closed());
println!("Кабіна ліфта заїхала на 3-й поверх: {:?}", car_arrived(3));
}