Files
rust-otus/smart-house/README.md

4.4 KiB
Raw Permalink Blame History

Учебная библиотека "Умный дом"

Демонстрационная библиотека для выполнения домашних заданий.

ДЗ 2025-12-16

Заготовка для библиотеки "Умный дом".

Цель:

Создать заготовку для библиотеки «Умный дом» и напишите пример, демонстрирующий её функционал.

Срок:

Сдать до: 2026-01-19

Описание/Пошаговая инструкция выполнения домашнего задания:

Библиотека и пример использования реализованы в одном package.

Для библиотеки:

  • Реализована в виде lib крейта.
  • Опишите тип: умный термометр. Тип должен предоставлять следующий функционал:
    • Конструктор, принимающий значения полей.
    • Возвращать значение текущей температуры (произвольное число).
  • Опишите тип: умная розетка. Тип должен предоставлять следующий функционал:
    • Конструктор, принимающий значения полей.
    • Включение/выключение + возможность узнать текущее состояние.
    • Возвращать текущую мощность: если выключено — ноль, иначе произвольное число.
  • Опишите тип: умное устройство. Тип должен содержать одно из устройств (умный термометр или розетку) и предоставлять следующий функционал:
    • Выводить в стандартный вывод сообщение о состоянии устройства.
  • Опишите тип: комната, содержащая массив умных устройств. Тип должен предоставлять следующий функционал:
    • Конструктор, принимающий массив устройств.
    • Можно получить ссылку на устройство по указанному индексу.
    • Можно получить мутабельную ссылку на устройство по указанному индексу.
    • Выводить в стандартный вывод отчёт о всех устройствах в комнате.
  • Опишите тип: умный дом, содержащий массив комнат. Тип должен предоставлять следующий функционал:
    • Конструктор, принимающий массив комнат.
    • Можно получить ссылку на комнату по указанному индексу.
    • Можно получить мутабельную ссылку на комнату по указанному индексу.
    • Выводить в стандартный вывод отчёт о всех комнатах.
  • Размеры массивов можно выбрать произвольно.
  • В случае, если указан индекс, выходящий за пределы массива, приложение должно аварийно завершаться (макрос panic!()).

Для примера использования:

  • Реализована в виде bin крейта.
  • Создайте экземпляр умного дома и выведете отчёт о его содержимом.
  • Для уже созданного экземпляра дома выключите умную розетку в одной из комнат. Снова выведите отчёт.

Критерии оценки:

  • Package успешно собирается.
  • Приложение-пример успешно выполняется и выводит отчёт о доме.
  • Команды cargo clippy и cargo fmt --check не выводят ошибок и предупреждений.
  • Присутствуют и успешно выполняются модульные тесты.