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

58 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Учебная библиотека "Умный дом"
Демонстрационная библиотека для выполнения домашних заданий.
## ДЗ 2025-12-16
Заготовка для библиотеки "Умный дом".
### Цель:
Создать заготовку для библиотеки «Умный дом» и напишите пример, демонстрирующий её функционал.
### Срок:
Сдать до: **2026-01-19**
### Описание/Пошаговая инструкция выполнения домашнего задания:
Библиотека и пример использования реализованы в одном package.
Для библиотеки:
- [x] Реализована в виде lib крейта.
- [ ] Опишите тип: умный термометр. Тип должен предоставлять следующий функционал:
- [ ] Конструктор, принимающий значения полей.
- [ ] Возвращать значение текущей температуры (произвольное число).
- [ ] Опишите тип: умная розетка. Тип должен предоставлять следующий функционал:
- [ ] Конструктор, принимающий значения полей.
- [ ] Включение/выключение + возможность узнать текущее состояние.
- [ ] Возвращать текущую мощность: если выключено — ноль, иначе произвольное число.
- [ ] Опишите тип: умное устройство. Тип должен содержать одно из устройств (умный термометр или розетку) и предоставлять следующий функционал:
- [ ] Выводить в стандартный вывод сообщение о состоянии устройства.
- [ ] Опишите тип: комната, содержащая массив умных устройств. Тип должен предоставлять следующий функционал:
- [ ] Конструктор, принимающий массив устройств.
- [ ] Можно получить ссылку на устройство по указанному индексу.
- [ ] Можно получить мутабельную ссылку на устройство по указанному индексу.
- [ ] Выводить в стандартный вывод отчёт о всех устройствах в комнате.
- [ ] Опишите тип: умный дом, содержащий массив комнат. Тип должен предоставлять следующий функционал:
- [ ] Конструктор, принимающий массив комнат.
- [ ] Можно получить ссылку на комнату по указанному индексу.
- [ ] Можно получить мутабельную ссылку на комнату по указанному индексу.
- [ ] Выводить в стандартный вывод отчёт о всех комнатах.
- Размеры массивов можно выбрать произвольно.
- В случае, если указан индекс, выходящий за пределы массива, приложение должно аварийно завершаться (макрос `panic!()`).
Для примера использования:
- [ ] Реализована в виде bin крейта.
- [ ] Создайте экземпляр умного дома и выведете отчёт о его содержимом.
- [ ] Для уже созданного экземпляра дома выключите умную розетку в одной из комнат. Снова выведите отчёт.
**Критерии оценки**:
- Package успешно собирается.
- Приложение-пример успешно выполняется и выводит отчёт о доме.
- Команды cargo clippy и cargo fmt --check не выводят ошибок и предупреждений.
- Присутствуют и успешно выполняются модульные тесты.