Add smart-house lib skeleton

This commit is contained in:
10 changed files with 94 additions and 1 deletions

1
smart-house/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
/target/

7
smart-house/Cargo.lock generated Normal file
View File

@@ -0,0 +1,7 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 4
[[package]]
name = "smart-house"
version = "0.0.0"

6
smart-house/Cargo.toml Normal file
View File

@@ -0,0 +1,6 @@
[package]
edition = "2024"
name = "smart-house"
version = "0.0.0"
[dependencies]

57
smart-house/README.md Normal file
View File

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

2
smart-house/rustfmt.toml Normal file
View File

@@ -0,0 +1,2 @@
max_width = 160
newline_style = "Unix"

1
smart-house/src/lib.rs Normal file
View File

@@ -0,0 +1 @@

1
smart-house/src/main.rs Normal file
View File

@@ -0,0 +1 @@
fn main() {}