Alıştırma: Asansör Olayları

Bir asansör kontrol sistemindeki bir olayı temsil etmek için bir veri yapısı oluşturacağız. Çeşitli olayları yapılandırmak için türleri ve fonksiyonları tanımlamak size kalmış. Türlerin {:?} ile biçimlendirilmesine izin vermek için #[derive(Debug)] kullanın.

Bu alıştırma yalnızca, main'in hatasız çalışması için veri yapıları oluşturmayı ve doldurmayı gerektirir. Kursun bir sonraki kısmı bu yapılardan veri almayı kapsayacaktır.

#[derive(Debug)]
/// Asansör sisteminde kontrolörün tepki vermesi gereken bir olay.
enum Event {
    // TODO: gerekli değişkeleri (variant) ekle
}

/// Bir seyahat yönü.

#[derive(Debug)]
enum Direction {
    Up,
    Down,
}

/// Araba verilen kata ulaşmış durumda.
fn car_arrived(floor: i32) -> Event {
    todo!()
}

/// Araba kapıları açılmış durumda.
fn car_door_opened() -> Event {
    todo!()
}

/// Araba kapıları kapanmış durumda.
fn car_door_closed() -> Event {
    todo!()
}

/// Verilen kattaki asansör lobisinde yön düğmesine basıldı.
fn lobby_call_button_pressed(floor: i32, dir: Direction) -> Event {
    todo!()
}

/// Asansör kabininde bir kat düğmesine basıldı.
fn car_floor_button_pressed(floor: i32) -> Event {
    todo!()
}

fn main() {
    println!(
        "Zemin kattaki bir yolcu yukarı düğmesine basmış durumda: {:?}",
        lobby_call_button_pressed(0, Direction::Up)
    );
    println!("Araba zemin kata ulaşmış durumda: {:?}", car_arrived(0));
    println!("Araba kapısı açıldı: {:?}", car_door_opened());
    println!(
        "Bir yolcu 3. katın düğmesine basmış durumda: {:?}",
        car_floor_button_pressed(3)
    );
    println!("Araba kapısı kapandı: {:?}", car_door_closed());
    println!("Araba 3. kata ulaşmış durumda: {:?}", car_arrived(3));
}