TGViewer
Кузенков x IT-Хозяева Кузенков x IT-Хозяева @webcorner · 334 subscribers
Post #101 2.24K
REST API на Rust'е🦀

Конечно, Rust не идеален и кроме макросов и вариадиков в нем достаточно неоднозначных решений. Как упоминали в комментах, одно из них - реализация async. Но дело тут даже не в Pin/Unpin и прочих сложных типах.

Rust эволюционировал и даже знаменитый borrow checker в нем появился не сразу и когда я учился в универе: был знакомый чел, который писал на Rust'е со сборщиком мусора. И одним из витков эволюции стал тренд на уменьшение рантайма. Желательно, чтобы работало в условиях полного отключения рантайма - так появился no_std в котором по-умолчанию нет аллокатора.

И с позиции минимализации рантайма из коробки они и реализовали асинхронность. Для того, чтобы запустить что-то асинхронное вам понадобится что-то, что будет из синхронного Rust'а хитро парковать выполнение когда вы вызываете .await и продолжать выполнение, как что-то будет готово. Это тот самый рантайм. https://tokio.rs/ сейчас самое популярное решение и так как оно не коробочное - раскол сообщества успешно произошел, но не вылился во что-то очень крупное. Альтернативные рантаймы выбирают редко и когда уже понимают, что нужно где-то выжать доп производительность или, например, жить конкурентно в одном потоке.

У рантайма Tokio довольно богатая экосистема. И одной из core частей является Tower - это такая система мидлвар для http клиентов/серверов. И пока Tokio окончательно не стал тир-1 решением асинк рантайма была масса вариантов что бы выбирать для http сервер. Теперь же есть смысл выбирать только то, что построенно поверх Tower'а - tonik для grpc и axum для всего остального.

PS. Есть также прикольные попытки вроде https://loco.rs/ сделать полноценный RoR-like фреймворк, но это просто интересный проект, в котором надежностью и стабильностью пока не пахнет.

axum дает реализацию роутинга и набор модулей для более простой разработки (что-то вроде express'а). Для написания json api нам точно понадобится openapi и набор для валидации входящих запросов. Для open-api + макросов для роутинга я беру utoipa, а axum-valid в качестве обертки для валидации.

Для всяких крон и других видов фоновых задач меня устроил apalis(ощущается как давно знакомый мне Bull). А sqlx закрыл для меня вопрос взаимодействия с бд (Rust и ORM - это можно, но хочется больше контроля).

В целом вот такой вот набор вам понадобится для написания API на Rust'е. Для старта в асинхронщину на Rust'е рекомендую разобраться в синхронном коде, многопоточности и переходить к async-book (автор похоже начал ее переписывать и возможно даже наконец допишет). С utopia получается делать достаточно декларативный роутинг, а axum state позволяет обернуть все это дело в приятный DI. Успехов!
tokio.rs Tokio - An asynchronous Rust runtime Tokio is a runtime for writing reliable asynchronous applications with Rust. It provides async I/O, networking, scheduling, timers, and more.
  • 👍 14
  • 🔥 4
  • 🌚 2
  • ❤‍🔥 1
More from @webcorner
  1. Jun 29, 2026telega-gleam 2.0 🚀 В целом, я убил все остальные фреймворки для тг ботов. Расходимся. Гла…
  2. Mar 7, 2026Агенты в обучении Один из моих любимых примеров использования ИИ-агентов - самостоятельное…
  3. Feb 4, 2026https://t.me/harvardsplatebot Это был тест Harvard Bot 🤖 Кидаем фотку, анализируем еду 🌯
  4. Jan 26, 2026Вайбкод: практика 🛠 Пошаговая инструкция к вайбовой разработке. 📋 Продуктовый вижен Спер…
  5. Jan 26, 2026Вайбкод 🎸 Проекты для инди-дева — это всегда куча потраченного вне рабочего времени в вых…
  6. Nov 14, 2025Скоро будет почти 6 лет, как я занимаюсь индивидуальным и групповым менторством, помогаю р…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →