- Научиться разделять код на модули.
- Использовать сущности из других модулей.
- Писать модульные и функциональные тесты.
Результатом является:
- Многофайловый прототип библиотеки "Умный Дом" с тестами.
- Разделить логически целостные элементы библиотеки "Умный Дом" на отдельные файлы.
- Покрыть тестами требования к библиотеке.
- Создать example использования библиотеки. Библиотека предоставляет структуру дома в комнатах которого расположены устройства.
- Дом имеет название и содержит несколько помещений.
- Библиотека позволяет запросить список помещений в доме.
- Помещение имеет уникальное название и содержит названия нескольких устройств.
- Устройство имеет уникальное в рамках помещения имя.
- Библиотека позволяет получать список устройств в помещении.
- Библиотека имеет функцию, возвращающую текстовый отчёт о состоянии дома. Эта функция принимает в качестве аргумента обобщённый тип, позволяющий получить текстовую информацию о состоянии устройства, для включения в отчёт. Эта информация должна предоставляться для каждого устройства на основе данных о положении устройства в доме: имени комнаты и имени устройства. Если устройство не найдено в источнике информации, то вместо текста о состоянии вернуть сообщение об ошибке. Шаблон для описания сущностей библиотеки: https://gist.github.com/76dff7177f19ff7e802b1e121865afe4
Статус Принято
ставится, если:
- Код логически верно разбит на модули.
- Утилита
cargo clippy
не выдаёт предупреждений. - Команда
cargo fmt --check --all
не выдаёт предупреждений. - Написаны тесты для функционала библиотеки.
- В примере инициализируется "Умный дом" и источник информации об устройствах. На экран выводится список комнат и устройств в них. На экран выводится отчёт о состоянии дома.
- Знание языка Rust.
- Организация кода.