В мире
Rust есть несколько популярных инструментов для асинхронности. Самый известный -
Tokio. Но есть и альтернатива:
smol. Это простой и легковесный рантайм, который подходит не для всех, но решает свои задачи элегантно.
Что такое smol:
Это не монолит, а набор маленьких библиотек (крейтов), собранных вместе. Каждый отвечает за свою задачу:
async-channel для каналов,
async-io для ввода-вывода,
async-executor для планирования. Берете только то, что нужно.
Чем полезен smol:
- Быстрая компиляция: меньше кода - меньше ожидания.
- Маленький размер: не тянет за собой ненужные зависимости.
- Совместимость: через адаптер async-compat работает с библиотеками для Tokio.
- Простота: базовый запуск - это smol::block_on(async { ... }). Ничего лишнего.
Пример:
Создать TCP-соединение и скопировать данные можно буквально в несколько строк.
smol дает примитивы для сетевого
I/O, файловых операций и многопоточности, при этом вы используете только те компоненты, которые действительно нужны.
Кому подойдет:
- Разработчикам CLI-утилит.
- Для embedded-проектов с сетевыми возможностями.
- Если в проекте нужна асинхронность, но Tokio кажется избыточным.
Вывод:
Smol - это выбор в пользу простоты и контроля. Он не заменит
Tokio в высоконагруженных сервисах, но предлагает отличную альтернативу там, где важны скорость сборки, размер бинарника и понятность кода. Иногда меньше - значит лучше.