Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Упражнение: Управление лифтом

Мы создадим структуру данных, которая представляет событие в системе управления лифтом. Вы сами определите типы и функции для создания различных событий. Используйте #[derive(Debug)], чтобы типы можно было выводить через {:?}.

Это упражнение требует только создать структуры данных и заполнить их так, чтобы main выполнялся без ошибок. Следующая часть курса расскажет, как извлекать данные из этих структур.

// Copyright 2023 Google LLC
// SPDX-License-Identifier: Apache-2.0

#![allow(dead_code)]

#[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!(
        "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));
}
This slide and its sub-slides should take about 15 minutes.
  • Если студенты спросят про #![allow(dead_code)] в начале упражнения: он нужен, потому что единственное, что мы делаем с типом Event, — это выводим его. Из-за особенности проверки неиспользуемого кода компилятор считает код неиспользуемым. Для целей этого упражнения это можно игнорировать.