Exercício: Eventos de Elevador
Vamos criar uma estrutura de dados para representar um evento em um sistema de controle de elevador. Cabe a você definir os tipos e funções para construir vários eventos. Use #[derive(Debug)] para permitir que os tipos sejam formatados com {:?}.
Este exercício requer apenas a criação e o preenchimento de estruturas de dados para que o main seja executado sem erros. A próxima parte do curso abordará a obtenção de dados dessas estruturas.
#[derive(Debug)]
/// Um evento no sistema de elevador ao qual o controlador deve reagir.
enum Event {
// TODO: adicionar variantes necessárias
}
/// Uma direção da viagem.
#[derive(Debug)]
enum Direction {
Up,
Down,
}
/// O elevador chegou no andar dado.
fn car_arrived(floor: i32) -> Event {
todo!()
}
/// As portas do elevador se abriram.
fn car_door_opened() -> Event {
todo!()
}
/// As portas do elevador se fecharam.
fn car_door_closed() -> Event {
todo!()
}
/// Um botão direcional foi pressionado em um saguão de elevador no andar dado.
fn lobby_call_button_pressed(floor: i32, dir: Direction) -> Event {
todo!()
}
/// Um botão de andar foi pressionado no elevador.
fn car_floor_button_pressed(floor: i32) -> Event {
todo!()
}
fn main() {
println!(
"Um passageiro do térreo pressionou o botão para subir: {:?}",
lobby_call_button_pressed(0, Direction::Up)
);
println!("O elevador chegou no térreo: {:?}", car_arrived(0));
println!("A porta do elevador se abriu: {:?}", car_door_opened());
println!(
"Um passageiro pressionou o botão do 3º andar: {:?}",
car_floor_button_pressed(3)
);
println!("A porta do elevador se fechou: {:?}", car_door_closed());
println!("O elevador chegou no 3º andar: {:?}", car_arrived(3));
}