diff --git a/rust-training/src/async-rust-python.md b/rust-training/src/async-rust-python.md index bdb5c91..2920d75 100644 --- a/rust-training/src/async-rust-python.md +++ b/rust-training/src/async-rust-python.md @@ -8,7 +8,7 @@ Следуйте инструкциям по установке инструмента сборки Maturin: . Рекомендуем использовать pyenv: , но pyenv работает только в UNIX и WSL. Конечно, можно использовать и любой другой менеджер виртуальных окружений. -Перейдите в терминале в папку `exercises/7-rust-for-data-science/1-rust-from-python/1-hello-world/`. Создайте и активируйте виртуальное окружение и установите всё необходимое. Если вы используете pyenv, выполните следующие команды: +Перейдите в терминале в папку `exercises/7-rust-for-data-science/2-async-rust-python/1-hello-world/`. Создайте и активируйте виртуальное окружение и установите всё необходимое. Если вы используете pyenv, выполните следующие команды: ```shell $ pyenv activate pyo3 @@ -75,7 +75,7 @@ $ python test.py Наша библиотека должна потоково десериализовать каждый входящий объект из [потока байтов `asyncio`](https://docs.python.org/3/library/asyncio.html), применить заданную операцию и передать результат дальше. ### Упражнение 7.2.2.A: Попробуйте ⭐ -Заготовка в `exercises/7-rust-for-data-science/1-rust-from-python/2-strompy/` реализует задуманное на Rust и также содержит синхронную реализацию. Посмотрите код и попробуйте в нём разобраться. Если хотите узнать больше о зависимостях, помогут [docs.rs](https://docs.rs). Обратите внимание, что для `struson` мы импортируем форк, который поддерживает асинхронную десериализацию. +Заготовка в `exercises/7-rust-for-data-science/2-async-rust-python/2-strompy/` реализует задуманное на Rust и также содержит синхронную реализацию. Посмотрите код и попробуйте в нём разобраться. Если хотите узнать больше о зависимостях, помогут [docs.rs](https://docs.rs). Обратите внимание, что для `struson` мы импортируем форк, который поддерживает асинхронную десериализацию. Чтобы собрать и выполнить тесты из `src/lib.rs`, запустите `cargo test`. diff --git a/rust-training/src/embedded-ecosystem.md b/rust-training/src/embedded-ecosystem.md index 0a70e39..c96dfde 100644 --- a/rust-training/src/embedded-ecosystem.md +++ b/rust-training/src/embedded-ecosystem.md @@ -8,7 +8,7 @@ Связаться с LSM303AGR можно по I2C, который есть на плате micro:bit. Обратите внимание, что nRF52833 поддерживает I2C через периферийное устройство TWIM (Two-Wire Interface Master). Для начала настроим периферию I2C на нашей отладочной плате и прочитаем регистр ID акселерометра LSM303AGR. -Отправная точка находится в файле `exercises/8-embedded/1-embedded-ecosystem/src/main.rs` в [репозитории](https://github.com/tweedegolf/rust-training). +Отправная точка находится в файле `exercises/8-embedded/1-embedded-ecosystem/1-lsm303agr-id/src/main.rs` в [репозитории](https://github.com/tweedegolf/rust-training). Попробуйте запустить существующий проект, а затем реализуйте функциональность в соответствии с комментариями в коде. diff --git a/rust-training/src/rust-for-web-servers.md b/rust-training/src/rust-for-web-servers.md index 8a405fd..6593e59 100644 --- a/rust-training/src/rust-for-web-servers.md +++ b/rust-training/src/rust-for-web-servers.md @@ -7,7 +7,7 @@ В этом упражнении мы напишем простой веб-сервер на [`axum`](https://docs.rs/axum/), который позволяет пользователям загружать изображения и обрезать их. Вы научитесь отдавать статические HTML-страницы вместе с их таблицами стилей и изображениями, а также обрабатывать POST-запросы с данными формы в формате multipart, чтобы принимать загруженные изображения. ### 5.1.1.A Hello axum -В `exercises/5-rust-for-web/1-rust-for-web/1-lettuce-crop` уже настроено начало нашего веб-сервера. Сейчас он отдаёт «Hello, world!» только на GET-запросы к главной странице. Запустите программу и откройте в браузере [http://[::]:7000/](http://[::]:7000/), чтобы проверить, что всё работает. +В `exercises/5-rust-for-web/1-rust-for-web-servers/1-lettuce-crop` уже настроено начало нашего веб-сервера. Сейчас он отдаёт «Hello, world!» только на GET-запросы к главной странице. Запустите программу и откройте в браузере [http://[::]:7000/](http://[::]:7000/), чтобы проверить, что всё работает. Адрес [http://[::]:7000/](http://[::]:7000/) — это неуказанный (wildcard) адрес для [IPv6](https://ru.wikipedia.org/wiki/IPv6). Если вы хотите использовать IPv4, откройте [http://0.0.0.0:7000/](http://0.0.0.0:7000/). Если сервер нужен только на localhost, используйте [http://127.0.0.1:7000/](http://127.0.0.1:7000/) или [http://[::1]:7000/](http://[::1]:7000/). diff --git a/rust-training/src/traits-and-generics.md b/rust-training/src/traits-and-generics.md index bd16f8c..7015c6a 100644 --- a/rust-training/src/traits-and-generics.md +++ b/rust-training/src/traits-and-generics.md @@ -40,7 +40,7 @@ 1. Когда такая структура данных эффективнее обычного `Vec`? 2. Каковы её недостатки по сравнению с обычным `Vec`? -Откройте крейт `exercises/2-foundations-of-rust/4-traits-and-generics/1-local-storage-vec`. В нём есть файл `src/lib.rs`, то есть этот крейт — библиотека. В `lib.rs` есть набор тестов, которые запускаются командой `cargo test`. Не беспокойтесь, если они пока не проходят или даже не компилируются: в этом упражнении ваша задача — это исправить. Большинство тестов сейчас закомментированы, чтобы можно было идти шаг за шагом. **Прежде чем начать, посмотрите код и комментарии в нём: там много полезных подсказок.** +Откройте крейт `exercises/2-foundations-of-rust/4-traits-and-generics/2-local-storage-vec`. В нём есть файл `src/lib.rs`, то есть этот крейт — библиотека. В `lib.rs` есть набор тестов, которые запускаются командой `cargo test`. Не беспокойтесь, если они пока не проходят или даже не компилируются: в этом упражнении ваша задача — это исправить. Большинство тестов сейчас закомментированы, чтобы можно было идти шаг за шагом. **Прежде чем начать, посмотрите код и комментарии в нём: там много полезных подсказок.** ### 2.4.2.A Определяем тип ⭐ Сейчас перечисление `LocalStorageVec` (`enum`) не завершено. Добавьте в него два варианта: `Stack` и `Heap`. `Stack` содержит два именованных поля: `buf` и `len`. `buf` — массив, вмещающий `N` элементов типа `T`; `len` — поле типа `usize`, которое хранит количество реально сохранённых элементов. Вариант `Heap` содержит безымянное поле с `Vec`. Если варианты определены правильно, запуск `cargo test` должен вывести примерно следующее: