Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions rust-training/src/async-rust-python.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

Следуйте инструкциям по установке инструмента сборки Maturin: <https://pyo3.rs/v0.21.2/getting-started>. Рекомендуем использовать pyenv: <https://github.com/pyenv/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
Expand Down Expand Up @@ -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`.

Expand Down
2 changes: 1 addition & 1 deletion rust-training/src/embedded-ecosystem.md
Original file line number Diff line number Diff line change
Expand Up @@ -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).

Попробуйте запустить существующий проект, а затем реализуйте функциональность в соответствии с комментариями в коде.

Expand Down
2 changes: 1 addition & 1 deletion rust-training/src/rust-for-web-servers.md
Original file line number Diff line number Diff line change
Expand Up @@ -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/).

Expand Down
2 changes: 1 addition & 1 deletion rust-training/src/traits-and-generics.md
Original file line number Diff line number Diff line change
Expand Up @@ -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<T>`. Если варианты определены правильно, запуск `cargo test` должен вывести примерно следующее:
Expand Down
Loading