Вправа: події в ліфті
Ми створимо структуру даних для представлення події в системі керування ліфтом. Ви самі визначаєте типи та функції для створення різних подій. Використовуйте #[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)); }