ключевые крейтыkey crates
Крейты, без которых не обходится ни один реальный проект: конкурентность, сеть, сериализация, базы данных, тестирование. В отличие от language/ и std/, здесь версии API меняются между мажорными релизами крейтов — при чтении сверяться с актуальной документацией на docs.rs. Каркас: 14 категорий, страницы фич ещё не написаны.The crates no real project goes without: concurrency, networking, serialization, databases, testing. Unlike language/ and std/, API details here shift across crates' major releases — cross-check against current docs.rs documentation when reading. Skeleton: 14 categories, feature pages not yet written.
Каждая категория — своя папка со своим index.html внутри, по одному крейту (или паре конкурирующих/дополняющих крейтов) на страницу.Each category has its own folder with its own index.html inside, one crate (or a pair of competing/complementary crates) per page.
tokio — async runtime для I/O-bound задач (сеть, файлы, таймеры); rayon — data-parallelism для CPU-bound задач (параллельные итераторы); crossbeam — lock-free каналы и структуры данных, epoch-based reclamation. Разные задачи, все три нужны.tokio — an async runtime for I/O-bound work (networking, files, timers); rayon — data parallelism for CPU-bound work (parallel iterators); crossbeam — lock-free channels and data structures, epoch-based reclamation. Different problems, all three needed.
HTTP-клиент, HTTP-сервер (стек tokio), WebSocket, SSH. Голый TCP/UDP — через tokio::net, отдельной страницы не требует.HTTP client, HTTP server (the tokio stack), WebSocket, SSH. Raw TCP/UDP — via tokio::net, no dedicated page needed.
serde — общий механизм (Serialize/Deserialize derive), не привязанный к формату; конкретные форматы — отдельными крейтами поверх него. bincode — компактный бинарный формат на serde; rkyv — полностью zero-copy архивирование, в обход serde-модели вообще.serde — the general mechanism (Serialize/Deserialize derive), format-agnostic; concrete formats — separate crates built on top of it. bincode — a compact binary format on serde; rkyv — fully zero-copy archiving, bypassing the serde model entirely.
То, чего нет в std::fs вообще: рекурсивный обход дерева директорий, безопасные временные файлы с автоудалением.What std::fs doesn't provide at all: recursive directory-tree traversal, safe auto-deleting temporary files.
nalgebra — линейная алгебра (векторы, матрицы, геометрия); num-traits — обобщённые числовые трейты для generic-кода над числами.nalgebra — linear algebra (vectors, matrices, geometry); num-traits — generic numeric traits for generic code over numbers.
SQL: sqlx (async, проверка запросов на этапе компиляции) и diesel (ORM, синхронный по умолчанию) — разные философии. NoSQL: redis, mongodb.SQL: sqlx (async, compile-time-checked queries) and diesel (ORM, sync by default) — different philosophies. NoSQL: redis, mongodb.
Встроенный механизм языка, мокирование трейтов, property-based тестирование (proptest и его предшественник quickcheck) — и отдельно loom: исчерпывающая проверка конкурентного кода на все interleaving'и потоков, а не просто запуск много раз.The built-in language mechanism, trait mocking, property-based testing (proptest and its predecessor quickcheck) — and separately loom: exhaustive checking of concurrent code across all thread interleavings, not just running it many times.
Статистически строгие бенчмарки — доверительные интервалы, обнаружение регрессий между запусками, вместо ручного замера времени.Statistically rigorous benchmarks — confidence intervals, regression detection across runs, instead of manual timing.
gRPC на стеке tokio — тот же async-фундамент, что у axum, protobuf-контракты вместо REST/JSON.gRPC on the tokio stack — the same async foundation as axum, protobuf contracts instead of REST/JSON.
clap — де-факто стандарт парсинга аргументов командной строки (derive-макросы, подкоманды, автогенерация --help); config — слияние настроек из файлов/переменных окружения/CLI в одну структуру.clap — the de facto standard for command-line argument parsing (derive macros, subcommands, auto-generated --help); config — merging settings from files/env vars/CLI into one struct.
log — минимальный фасад для простого логирования; tracing — структурированные события и spans с контекстом вызова, экосистемный стандарт для async-кода (интеграция с tokio из коробки).log — a minimal facade for simple logging; tracing — structured events and spans with call context, the ecosystem standard for async code (built-in tokio integration).
cxx — безопасный двусторонний мост Rust↔C++; bindgen генерирует Rust-биндинги из C/C++ заголовков, cbindgen — наоборот, C-заголовки из Rust; PyO3 — мост Rust↔Python (на нём построены orjson, ruff, polars).cxx — a safe two-way Rust↔C++ bridge; bindgen generates Rust bindings from C/C++ headers, cbindgen does the reverse — C headers from Rust; PyO3 — a Rust↔Python bridge (orjson, ruff, and polars are all built on it).
bumpalo — arena/bump-аллокатор: быстрое выделение без индивидуального освобождения, весь регион сбрасывается разом; mimalloc — глобальный аллокатор общего назначения, подключается как замена системного.bumpalo — an arena/bump allocator: fast allocation with no individual frees, the whole region gets dropped at once; mimalloc — a general-purpose global allocator, plugged in as a system-malloc replacement.
zstd — биндинг к Facebook-библиотеке, баланс скорости/степени сжатия; lz4_flex — чистый Rust без C-зависимости, приоритет скорости для случаев, где сжатие не должно попасть в hot path.zstd — a binding to Facebook's library, a good speed/ratio balance; lz4_flex — pure Rust with no C dependency, prioritizing speed for cases where compression must stay off the hot path.
статус и оговоркаstatus and caveat
Это каркас: категории и список крейтов зафиксированы, страницы ещё не написаны. Крипто/TLS сознательно не выделены отдельной категорией верхнего уровня — rustls и RustCrypto (sha2/aes/hmac и т.д.) войдут как часть networking (TLS-слой поверх HTTP/WebSocket) при заполнении, а не как десятая категория.This is a skeleton: the categories and crate list are locked in, pages not yet written. Crypto/TLS is deliberately not broken out as a tenth top-level category — rustls and RustCrypto (sha2/aes/hmac etc.) will fold into networking (the TLS layer on top of HTTP/WebSocket) once filled in, rather than becoming a tenth category.
В отличие от language/ и std/, крейты здесь — не часть языка: версии API меняются между релизами, часть карточек в будущем может устареть быстрее, чем страницы про сам язык.Unlike language/ and std/, crates here aren't part of the language: API versions shift across releases, and some of these pages may go stale faster than the language-focused ones.