Как "готовить" Rust

translated

Эта книга Rust. Сборник рецептов является коллекцией простых примеров, которые демонстрируют хорошие практики, чтобы выполнять стандартные программистские задачи, используя библиотеки из экосистемы Rust.

Вы можете подробнее прочитать о Rust. Сборник рецептов, включая советы о том, как читать книгу, как использовать примеры и заметки о принятых соглашениях.

Соавторам

Этот проект подразумевает лёгкость вхождения для новичков в программировании на Rust, а также является одним из самых лёгких путей, чтобы быть вовлечённым в Rust-сообщество. Помощь всегда приветствуется. Подробнее смотрите CONTRIBUTING.md

Алгоритмы

РецептКрейтыКатегории
Генерация случайных чиселrand-badgecat-science-badge
Генерация случайных чисел из диапазонаrand-badgecat-science-badge
Генерация случайных числе с заданным распределениемrand-badge [![rand_distr-badge]][rand_distr]cat-science-badge
Генерация случайных чисел пользовательского типаrand-badgecat-science-badge
Создание случайных паролей из заданного множества символовrand-badgecat-os-badge
Создание случайных паролей из заданного множества символовrand-badgecat-os-badge
Сортировка вектора целых чиселstd-badgecat-science-badge
Сортировка вектора вещественных чиселstd-badgecat-science-badge
Сортировка вектора структурstd-badgecat-science-badge

Командная строка

РецептКрейтыКатегории
Разбор аргументов командной строкиclap-badgecat-command-line-badge
ANSI терминалansi_term-badgecat-command-line-badge

Сжатие данных

РецептКрейтыКатегории
Распаковка tar-архиваflate2-badge tar-badgecat-compression-badge
Запаковка каталога в tar-архивflate2-badge tar-badgecat-compression-badge
Распаковка tar-архива с удалением префиксов путейflate2-badge tar-badgecat-compression-badge

Конкурентность

РецептКрейтыКатегории
Запуск короткоживущего потокаcrossbeam-badgecat-concurrency-badge
Передача данных между двумя потокамиcrossbeam-badgecat-concurrency-badge
Поддержание изменяемого глобального состоянияlazy_static-badgecat-rust-patterns-badge
Параллельное вычисление SHA1 над множеством iso-файловthreadpool-badge walkdir-badge num_cpus-badge ring-badgecat-concurrency-badgecat-filesystem-badge
Рисование фрактала с использованием пула потоковthreadpool-badge num-badge num_cpus-badge image-badgecat-concurrency-badgecat-science-badgecat-rendering-badge
Параллельное изменение элементов массиваrayon-badgecat-concurrency-badge
Параллельная проверка элементов коллекции на соответствие предикатуrayon-badgecat-concurrency-badge
Параллельный поиск элементов, соответствующих предикатуrayon-badgecat-concurrency-badge
Параллельная сортировка вектораrayon-badge rand-badgecat-concurrency-badge
Параллельный map-reducerayon-badgecat-concurrency-badge
Параллельная генерация миниатюр для картинок в формате jpgrayon-badge glob-badge image-badgecat-concurrency-badgecat-filesystem-badge

Криптография

РецептКрейтыКатегории
Вычисление SHA-256 хеша для файлаring-badge data-encoding-badgecat-cryptography-badge
Подписание и проверка сообщения с помощью HMAC хешаring-badgecat-cryptography-badge
Соление и хеширование пароля с PBKDF2ring-badge data-encoding-badgecat-cryptography-badge

Структуры данных

РецептКрейтыКатегории
Определение и работа с типами, представленными в виде битовых полейbitflags-badgecat-no-std-badge

Базы данных

РецептКрейтыКатегории
Создание SQLite базы данныхrusqlite-badgecat-database-badge
Выборка и вставка данныхrusqlite-badgecat-database-badge
Создание таблиц в Postgrespostgres-badgecat-database-badge
Выборка и вставка данныхpostgres-badgecat-database-badge
Агрегирование данныхpostgres-badgecat-database-badge

Дата и время

РецептКрейтыКатегории
Измерение прошедшего времениstd-badgecat-time-badge
Проверяемое вычисление даты и времениchrono-badgecat-date-and-time-badge
Преобразование локального времени во время в другом часовом поясеchrono-badgecat-date-and-time-badge
Просмотр даты и времениchrono-badgecat-date-and-time-badge
Преобразование даты в UNIX-timestamp и обратноchrono-badgecat-date-and-time-badge
Форматированный вывод даты и времениchrono-badgecat-date-and-time-badge
Разбор строки в структуру DateTimechrono-badgecat-date-and-time-badge

Средства разработки

Отладка

Версионирование

РецептКрейтыКатегории
Разбор и увеличение номера версииsemver-badgecat-config-badge
Разбор сложной строки с версиейsemver-badgecat-config-badge
Проверка если версия является предварительным релизомsemver-badgecat-config-badge
Нахождение последней версии в заданном диапазонеsemver-badgecat-config-badge
Проверка версии внешней команды для совместимостиsemver-badgecat-text-processing-badge cat-os-badge

Время сборки

РецептКрейтыКатегории
Компиляция и статическая линковка с библиотекой на языке Ccc-badgecat-development-tools-badge
Компиляция и статическая линковка с библиотекой на языке C++cc-badgecat-development-tools-badge
Компиляция библиотеки на языке C с особыми определениями препроцессораcc-badgecat-development-tools-badge

Кодирование

РецептКрейтыКатегории
%-кодирование строки![percent-encoding-badge]cat-encoding-badge
Кодирование строки как application/x-www-form-urlencodedurl-badgecat-encoding-badge
Кодирование и декодирование шестнадцатеричного представленияdata-encoding-badgecat-encoding-badge
Кодирование и декодирования представления в base64base64-badgecat-encoding-badge
Чтение записей из CSVcsv-badgecat-encoding-badge
Чтение записей из CSV с другим разделителемcsv-badgecat-encoding-badge
Фильтрование записей из CSV, удовлетворяющему предикатуcsv-badgecat-encoding-badge
Обработка неправильных данных в CSV с помощью Serdecsv-badge serde-badgecat-encoding-badge
Сериализация записей в CSVcsv-badgecat-encoding-badge
Сериализация записей в CSV с помощью Serdecsv-badge serde-badgecat-encoding-badge
Преобразование столбца в CSV-файлеcsv-badge serde-badgecat-encoding-badge
Сериализация и десериализация неструктурированных данных в формате JSONserde-json-badgecat-encoding-badge
Десериализация TOML-файлаtoml-badgecat-encoding-badge
Чтение и запись целых числах в прямом порядке байтов (little-endian)byteorder-badgecat-encoding-badge

Файловая система

РецептКрейтыКатегории
Чтение файла построчноstd-badgecat-filesystem-badge
Избегание записи и чтения из одного и того же файлаsame_file-badgecat-filesystem-badge
Произвольный доступ к файлу с использованием проекции в память (memory map)memmap-badgecat-filesystem-badge
Получение файлов, которые были модифицированы за последние 24 часаstd-badgecat-filesystem-badge cat-os-badge
Нахождение циклов в заданном путиsame_file-badgecat-filesystem-badge
Рекурсивное нахождение одинаковых имён файловwalkdir-badgecat-filesystem-badge
Рекурсивное нахождение всех файлов, удовлетворяющим заданному предикатуwalkdir-badgecat-filesystem-badge
Обход каталога с пропуском файлов, начинающихся с точки (dotfiles)walkdir-badgecat-filesystem-badge
Рекурсивное вычисление размеров файлов по заданному путиwalkdir-badgecat-filesystem-badge
Рекурсивное нахождение всех png-файловglob-badgecat-filesystem-badge
Нахождение всех файлов по заданному паттерну без учёта регистра символовglob-badgecat-filesystem-badge

Аппаратный доступ

РецептКрейтыКатегории
Проверка количества ядер процессораПроверка количества ядер процессораcat-hardware-support-badge

Управление памятью

РецептКрейтыКатегории
Определение лениво вычисляемой константыlazy_static-badgecat-caching-badge cat-rust-patterns-badge

Работа с сетью

РецептКрейтыКатегории
Прослушивание неиспользуемого TCP/IP портаstd-badgecat-net-badge

Операционная система

РецептКрейтыКатегории
Запуск внешней команды и обработка её выводаregex-badgecat-os-badge cat-text-processing-badge
Запуск внешней команды, передача ей стандартного ввода и проверка кода ошибкиregex-badgecat-os-badge cat-text-processing-badge
Запуск конвейера внешних командstd-badgecat-os-badge
Перенаправление вывода stdout и stderr дочернего процесса в один и тот же файлstd-badgecat-os-badge
Непрерывная обработка вывода нескольких дочерних процессовstd-badgecat-os-badgecat-text-processing-badge

Наука

Математика

РецептКрейтыКатегории
Сумма вектораndarray-badgecat-science-badge
Норма вектораndarray-badgecat-science-badge
Сложение матрицndarray-badgecat-science-badge
Перемножение матрицndarray-badgecat-science-badge
Умножение скаляра на вектор и матрицуndarray-badgecat-science-badge
Инвертирование матрицыnalgebra-badgecat-science-badge
Расчёт боковой стороны треугольникаstd-badgecat-science-badge
Проверка, что тангенс равен синусу делённому на косинусstd-badgecat-science-badge
Расстояние между двумя точками на поверхности сферыstd-badgecat-science-badge
Создание комплексных чиселnum-badgecat-science-badge
Сложение комплексных числеnum-badgecat-science-badge
Математические функции комплексных чиселnum-badgecat-science-badge
Измерение среднего значенияstd-badgecat-science-badge
Вычисление стандартного отклоненияstd-badgecat-science-badge
Большие целые числаnum-badgecat-science-badge

Обработка текста

РецептКрейтыКатегории
Получение графем Unicodeunicode-segmentation-badgecat-encoding-badge
Проверка и извлечение логина из email-адресаregex-badge lazy_static-badgecat-text-processing-badge
Извлечения списка из текста уникальных #тэговregex-badge lazy_static-badgecat-text-processing-badge
Извлечение из текста номеров телефоновregex-badgecat-text-processing-badge
Фильтрация лог-файла с помощью нескольких регулярных выраженийregex-badgecat-text-processing-badge
Замена всех вхождений одного текстового шаблона на другойregex-badge lazy_static-badgecat-text-processing-badge
Реализация типажа FromStr для определённой пользователем structstd-badgecat-text-processing-badge

Веб-программирование

Обработка веб-страниц

РецептКрейтыКатегории
Извлечение всех ссылок из HTML-страницыreqwest-badge select-badgecat-net-badge
Проверка веб-страницы на наличие мёртвых ссылокreqwest-badge select-badge url-badgecat-net-badge
Извлечение всех уникальных ссылок из страницы в формате MediaWikireqwest-badge regex-badgecat-net-badge

Работа с унифицированными указателями ресурсов (URL)

РецептКрейтыКатегории
Парсинг URL из строки в значение типа Urlurl-badgecat-net-badge
Создание базового URL удалением сегментов путиurl-badgecat-net-badge
Создание новых URL из базового URLurl-badgecat-net-badge
Извлечение URL источника (тройки схема / хост / порт)url-badgecat-net-badge
Удаление параметров запроса из URLurl-badgecat-net-badge

Типы мультимедиа (MIME)

РецептКрейтыКатегории
Получение типа MIME из строкиmime-badgecat-encoding-badge
Получение типа MIME из имени файлаmime-badgecat-encoding-badge
Парсинг типа MIME из HTTP ответаmime-badge reqwest-badgecat-net-badge cat-encoding-badge

Клиенты