Async Rust в 2026 это всё ещё боль или я что-то делаю не так

Рейтинг: 66.7% · 13 голосов
Python, Rust, Go, C++, C#, Java, Kotlin: синтаксис, паттерны проектирования, производительность, многопоточность и сравнение языков.
Ответить
Аватара пользователя
torch22
Сообщения: 43
Зарегистрирован: 11 май 2026, 20:50

Async Rust в 2026 это всё ещё боль или я что-то делаю не так

Сообщение torch22 »

Год пишу на Rust, синхронный код шёл нормально, местами даже приятно. Сейчас пилю сервис на axum 0.8 + tokio и ощущение что меня наказывают. Любое движение в сторону от примеров из доки и компилятор выдаёт future cannot be sent between threads safely на три экрана, причём указывает куда-то в недра tower. Вчера два часа воевал с higher-ranked lifetime error из-за замыкания в middleware.

Конкретный кейс: держал MutexGuard через await (да, знаю, нельзя, но ошибка об этом не говорит прямым текстом, она говорит про Send и тип на 40 строк). Rust 1.96, всё свежее.

Вопрос к тем кто в async Rust давно: оно реально становится нормально или вы просто привыкли к боли и называете это опытом?
👍1 ❤️1 🔥 😄 🤔
✔ Лучший ответ сформирован автоматически — suches
Становится нормально, но не само по себе, а когда в голове щёлкают три правила. Первое: tokio::spawn хочет Send + 'static, отсюда 90 процентов твоих ошибок, всё что уезжает в спавн должно быть Arc или owned. Второе: std::sync::MutexGuard через await не живёт, бери tokio::sync::Mutex или закрывай гард в отдельном скоупе до await. Третье: если многопоточность не нужна (а на 3-5k rps она часто не ну…
Перейти к ответу →
Аватара пользователя
suches
Сообщения: 15
Зарегистрирован: 12 май 2026, 06:36

Re: Async Rust в 2026 это всё ещё боль или я что-то делаю не так

Сообщение suches »

✔ Лучший ответ — сформирован автоматически
Становится нормально, но не само по себе, а когда в голове щёлкают три правила. Первое: tokio::spawn хочет Send + 'static, отсюда 90 процентов твоих ошибок, всё что уезжает в спавн должно быть Arc или owned. Второе: std::sync::MutexGuard через await не живёт, бери tokio::sync::Mutex или закрывай гард в отдельном скоупе до await. Третье: если многопоточность не нужна (а на 3-5k rps она часто не нужна), бери runtime current_thread + LocalSet и половина требований Send испаряется.

Ошибки да, читаются плохо. Через полгода начинаешь видеть в этой простыне одну нужную строчку, остальное скипаешь глазами.
👍1 ❤️1 🔥 😄1 🤔
Аватара пользователя
asynclover
Сообщения: 70
Зарегистрирован: 13 май 2026, 04:35

Re: Async Rust в 2026 это всё ещё боль или я что-то делаю не так

Сообщение asynclover »

skill issue. серьёзно. год это мало, через два будешь писать не задумываясь и закатывать глаза на такие темы
👍1 ❤️1 🔥 😄 🤔
Аватара пользователя
go4
Сообщения: 8
Зарегистрирован: 11 май 2026, 00:31

Re: Async Rust в 2026 это всё ещё боль или я что-то делаю не так

Сообщение go4 »

@asynclover, я после трёх лет async Rust ушёл на Go и сплю спокойно. горутина, канал, всё. да, пару раз в год ловлю data race в рантайме который раст бы не пропустил, считаю это честной ценой за нервы
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
makler
Сообщения: 11
Зарегистрирован: 19 май 2026, 10:48

Re: Async Rust в 2026 это всё ещё боль или я что-то делаю не так

Сообщение makler »

higher-ranked lifetime error в комбинации с async замыканиями это местами вообще баг компилятора, в issue-трекере таких репортов пачка, часть чинят годами. Так что не всегда дело в тебе. И вообще, тема без кода это гадание, кинул бы сигнатуру хендлера хоть.
👍1 ❤️2 🔥 😄 🤔
Аватара пользователя
krayzie
Сообщения: 28
Зарегистрирован: 12 май 2026, 14:46

Re: Async Rust в 2026 это всё ещё боль или я что-то делаю не так

Сообщение krayzie »

Из того что реально бесит до сих пор: async fn in traits стабилизировали ещё в 1.75, а dyn-совместимости нет до сих пор, поэтому в половине библиотек так и висит макрос async_trait с лишней аллокацией на каждый вызов. Вот это боль объективная, а не привычка.
👍 ❤️ 🔥 😄1 🤔
Аватара пользователя
tiriti
Сообщения: 3
Зарегистрирован: 11 май 2026, 06:44

Re: Async Rust в 2026 это всё ещё боль или я что-то делаю не так

Сообщение tiriti »

а зачем вам раст под обычный api сервис? если там нет числодробилки, питон или go закроют вопрос и команда не будет неделями медитировать над ошибками борроу-чекера. вечно берут инструмент ради инструмента
👍2 ❤️ 🔥 😄 🤔1
Аватара пользователя
Bill2001
Сообщения: 86
Зарегистрирован: 16 май 2026, 20:24

Re: Async Rust в 2026 это всё ещё боль или я что-то делаю не так

Сообщение Bill2001 »

@go4, Справедливости ради прогресс есть: async closures завезли в 1.85, ошибки про Send стали короче чем были года три назад, в nightly доводят return type notation как раз под проблему ТС с dyn. Медленно, но едет. Терпи, к 2027 может будет совсем хорошо, хах
👍 ❤️1 🔥 😄2 🤔
Ответить
Поделиться темой: ✈ Telegram VK

Вернуться в «Языки программирования»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей