From 5471cf05d368c6b3f4ba5a4a87b0f07032686c87 Mon Sep 17 00:00:00 2001 From: Alexander Baranov Date: Mon, 15 Dec 2025 13:31:05 +0300 Subject: [PATCH] Add smart-house lib skeleton --- .editorconfig | 14 ++++++++++ .gitignore | 1 + README.md | 5 +++- smart-house/.gitignore | 1 + smart-house/Cargo.lock | 7 +++++ smart-house/Cargo.toml | 6 +++++ smart-house/README.md | 57 ++++++++++++++++++++++++++++++++++++++++ smart-house/rustfmt.toml | 2 ++ smart-house/src/lib.rs | 1 + smart-house/src/main.rs | 1 + 10 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 .editorconfig create mode 100644 .gitignore create mode 100644 smart-house/.gitignore create mode 100644 smart-house/Cargo.lock create mode 100644 smart-house/Cargo.toml create mode 100644 smart-house/README.md create mode 100644 smart-house/rustfmt.toml create mode 100644 smart-house/src/lib.rs create mode 100644 smart-house/src/main.rs diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..7d47617 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,14 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_style = space +indent_size = 4 +insert_final_newline = true +trim_trailing_whitespace = true +max_line_length = 160 +tab_width = 2 + +[*.md] +trim_trailing_whitespace = false diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57f1cb2 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/.idea/ \ No newline at end of file diff --git a/README.md b/README.md index 8bbff4a..227a5b5 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,6 @@ # Домашние задания OTUS -Ссылка на курс: [Rust Developer. Professional](https://otus.ru/lessons/rust-developer/). \ No newline at end of file +Ссылка на курс: [Rust Developer. Professional](https://otus.ru/lessons/rust-developer/). + +Отчетные проекты: +- [Умный дом](smart-house/README.md) diff --git a/smart-house/.gitignore b/smart-house/.gitignore new file mode 100644 index 0000000..a6f89c2 --- /dev/null +++ b/smart-house/.gitignore @@ -0,0 +1 @@ +/target/ \ No newline at end of file diff --git a/smart-house/Cargo.lock b/smart-house/Cargo.lock new file mode 100644 index 0000000..214a382 --- /dev/null +++ b/smart-house/Cargo.lock @@ -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" diff --git a/smart-house/Cargo.toml b/smart-house/Cargo.toml new file mode 100644 index 0000000..743f6a1 --- /dev/null +++ b/smart-house/Cargo.toml @@ -0,0 +1,6 @@ +[package] +edition = "2024" +name = "smart-house" +version = "0.0.0" + +[dependencies] diff --git a/smart-house/README.md b/smart-house/README.md new file mode 100644 index 0000000..56ec72f --- /dev/null +++ b/smart-house/README.md @@ -0,0 +1,57 @@ +# Учебная библиотека "Умный дом" + +Демонстрационная библиотека для выполнения домашних заданий. + +## ДЗ 2025-12-16 + +Заготовка для библиотеки "Умный дом". + +### Цель: + +Создать заготовку для библиотеки «Умный дом» и напишите пример, демонстрирующий её функционал. + +### Срок: + +Сдать до: **2026-01-19** + +### Описание/Пошаговая инструкция выполнения домашнего задания: + +Библиотека и пример использования реализованы в одном package. + +Для библиотеки: + +- [x] Реализована в виде lib крейта. +- [ ] Опишите тип: умный термометр. Тип должен предоставлять следующий функционал: + - [ ] Конструктор, принимающий значения полей. + - [ ] Возвращать значение текущей температуры (произвольное число). +- [ ] Опишите тип: умная розетка. Тип должен предоставлять следующий функционал: + - [ ] Конструктор, принимающий значения полей. + - [ ] Включение/выключение + возможность узнать текущее состояние. + - [ ] Возвращать текущую мощность: если выключено — ноль, иначе произвольное число. +- [ ] Опишите тип: умное устройство. Тип должен содержать одно из устройств (умный термометр или розетку) и предоставлять следующий функционал: + - [ ] Выводить в стандартный вывод сообщение о состоянии устройства. +- [ ] Опишите тип: комната, содержащая массив умных устройств. Тип должен предоставлять следующий функционал: + - [ ] Конструктор, принимающий массив устройств. + - [ ] Можно получить ссылку на устройство по указанному индексу. + - [ ] Можно получить мутабельную ссылку на устройство по указанному индексу. + - [ ] Выводить в стандартный вывод отчёт о всех устройствах в комнате. +- [ ] Опишите тип: умный дом, содержащий массив комнат. Тип должен предоставлять следующий функционал: + - [ ] Конструктор, принимающий массив комнат. + - [ ] Можно получить ссылку на комнату по указанному индексу. + - [ ] Можно получить мутабельную ссылку на комнату по указанному индексу. + - [ ] Выводить в стандартный вывод отчёт о всех комнатах. +- Размеры массивов можно выбрать произвольно. +- В случае, если указан индекс, выходящий за пределы массива, приложение должно аварийно завершаться (макрос `panic!()`). + +Для примера использования: + +- [ ] Реализована в виде bin крейта. +- [ ] Создайте экземпляр умного дома и выведете отчёт о его содержимом. +- [ ] Для уже созданного экземпляра дома выключите умную розетку в одной из комнат. Снова выведите отчёт. + +**Критерии оценки**: + +- Package успешно собирается. +- Приложение-пример успешно выполняется и выводит отчёт о доме. +- Команды cargo clippy и cargo fmt --check не выводят ошибок и предупреждений. +- Присутствуют и успешно выполняются модульные тесты. diff --git a/smart-house/rustfmt.toml b/smart-house/rustfmt.toml new file mode 100644 index 0000000..eb3b53c --- /dev/null +++ b/smart-house/rustfmt.toml @@ -0,0 +1,2 @@ +max_width = 160 +newline_style = "Unix" \ No newline at end of file diff --git a/smart-house/src/lib.rs b/smart-house/src/lib.rs new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/smart-house/src/lib.rs @@ -0,0 +1 @@ + diff --git a/smart-house/src/main.rs b/smart-house/src/main.rs new file mode 100644 index 0000000..f328e4d --- /dev/null +++ b/smart-house/src/main.rs @@ -0,0 +1 @@ +fn main() {}