# Учебная библиотека "Умный дом" Демонстрационная библиотека для выполнения домашних заданий. ## ДЗ 2025-12-16 Заготовка для библиотеки "Умный дом". ### Цель: Создать заготовку для библиотеки «Умный дом» и напишите пример, демонстрирующий её функционал. ### Срок: Сдать до: **2026-01-19** ### Описание/Пошаговая инструкция выполнения домашнего задания: Библиотека и пример использования реализованы в одном package. Для библиотеки: - [x] Реализована в виде lib крейта. - [ ] Опишите тип: умный термометр. Тип должен предоставлять следующий функционал: - [ ] Конструктор, принимающий значения полей. - [ ] Возвращать значение текущей температуры (произвольное число). - [ ] Опишите тип: умная розетка. Тип должен предоставлять следующий функционал: - [ ] Конструктор, принимающий значения полей. - [ ] Включение/выключение + возможность узнать текущее состояние. - [ ] Возвращать текущую мощность: если выключено — ноль, иначе произвольное число. - [ ] Опишите тип: умное устройство. Тип должен содержать одно из устройств (умный термометр или розетку) и предоставлять следующий функционал: - [ ] Выводить в стандартный вывод сообщение о состоянии устройства. - [ ] Опишите тип: комната, содержащая массив умных устройств. Тип должен предоставлять следующий функционал: - [ ] Конструктор, принимающий массив устройств. - [ ] Можно получить ссылку на устройство по указанному индексу. - [ ] Можно получить мутабельную ссылку на устройство по указанному индексу. - [ ] Выводить в стандартный вывод отчёт о всех устройствах в комнате. - [ ] Опишите тип: умный дом, содержащий массив комнат. Тип должен предоставлять следующий функционал: - [ ] Конструктор, принимающий массив комнат. - [ ] Можно получить ссылку на комнату по указанному индексу. - [ ] Можно получить мутабельную ссылку на комнату по указанному индексу. - [ ] Выводить в стандартный вывод отчёт о всех комнатах. - Размеры массивов можно выбрать произвольно. - В случае, если указан индекс, выходящий за пределы массива, приложение должно аварийно завершаться (макрос `panic!()`). Для примера использования: - [ ] Реализована в виде bin крейта. - [ ] Создайте экземпляр умного дома и выведете отчёт о его содержимом. - [ ] Для уже созданного экземпляра дома выключите умную розетку в одной из комнат. Снова выведите отчёт. **Критерии оценки**: - Package успешно собирается. - Приложение-пример успешно выполняется и выводит отчёт о доме. - Команды cargo clippy и cargo fmt --check не выводят ошибок и предупреждений. - Присутствуют и успешно выполняются модульные тесты.