تمرین: رویدادهای آسانسور

ما یک ساختار داده برای نمایش یک رویداد در یک سیستم کنترل آسانسور ایجاد خواهیم کرد. این به شما بستگی دارد که انواع و عملکردها را برای ساخت رویدادهای مختلف تعریف کنید. از #[derive(Debug)] استفاده کنید تا اجازه دهید انواع با {:?} قالببندی شوند.

این تمرین فقط به ایجاد و پر کردن ساختارهای داده نیاز دارد تا main بدون خطا اجرا شود. بخش بعدی این دوره دریافت داده‌ها از این ساختارها را پوشش می‌دهد.

#[derive(Debug)]
/// An event in the elevator system that the controller must react to.
enum Event {
    // TODO: add required variants
}

/// A direction of travel.
#[derive(Debug)]
enum Direction {
    Up,
    Down,
}

/// The car has arrived on the given floor.
fn car_arrived(floor: i32) -> Event {
    todo!()
}

/// The car doors have opened.
fn car_door_opened() -> Event {
    todo!()
}

/// The car doors have closed.
fn car_door_closed() -> Event {
    todo!()
}

/// A directional button was pressed in an elevator lobby on the given floor.
fn lobby_call_button_pressed(floor: i32, dir: Direction) -> Event {
    todo!()
}

/// A floor button was pressed in the elevator car.
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!("ماشین به طبقه همکف رسیده است: {:?}", car_arrived(0));
    println!("در ماشین باز شد: {:?}", car_door_opened());
    println!(
        "یک مسافر دکمه طبقه 3 را فشار داده است: {:?}",
        car_floor_button_pressed(3)
    );
    println!("در ماشین بسته شد: {:?}", car_door_closed());
    println!("ماشین به طبقه ۳ رسیده است: {:?}", car_arrived(3));
}