練習:電梯事件
我們會建立資料結構,用來代表電梯控制系統中的事件。您可以自行定義類型和函式,建構各種事件。請使用 #[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!("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));
}