new homework definition

This commit is contained in:

View File

@@ -168,3 +168,40 @@
Запуск примера умного дома: Запуск примера умного дома:
cargo run --bin mocks_example cargo run --bin mocks_example
## ДЗ 2026-03-05
Паттерны в умном доме
### Цель:
Делаем код умного дома более удобным с использованием различных паттернов.
### Срок:
Сдать до: **2026-04-01**
### Описание/Пошаговая инструкция выполнения домашнего задания:
Реализовать билдер для умного дома, позволяющий инициализировать объект умного дома в [таком стиле](https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=5d0527e4684f726d54dc375829d983f4).
- [ ] До добавления первой комнаты, билдер запрещает добавлять устройства. Это должно контролироваться компилятором.
Реализовать компоновщик для построения отчёта об объектах умного дома в [таком стиле](https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=c07dfc726e8ccbccdcc2d88a79d3f190).
- [ ] Использовать статический полиморфизм (дженерики).
- [ ] Вызов метода report() должен выводить в терминал отчёт обо всех добавленных объектах.
Добавить возможность добавления callback-ов в объект комнаты, которые срабатывают при добавлении новых устройств в комнату (паттерн Observer).
- [ ] Использовать динамический полиморфизм (трейт-объекты).
- [ ] Можно передавать как объект-subscriber, так и [замыкание](https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=06e9dc9bcce297d1e80a22d7e9338ee8).
Добавить example-ы, демонстрирующие новый функционал.
**Критерии оценки:**
- Package успешно собирается.
- Приложение-пример успешно выполняется.
- Команды cargo clippy и cargo fmt --check не выводят ошибок и предупреждений.
- Присутствуют и успешно выполняются модульные тесты.