Асинхронный Rust врезался в потолок: две точки ожидания — 360 строк промежуточного кода против 23 у синхронного
Я думал, абстракции без накладных расходов в Rust: почти правда. Пока не увидел, как async-функция с двумя await разворачивается в конечный автомат из 360 строк IR. Синхронный аналог займёт 23 строки.
Для сервера терпимо. Для прошивки на 256 КБ или wasm-модуля, где каждый килобайт на счету, уже нет. Автор объясняет, почему rustc не схлопывает состояния, не раскрывает сопрограммы и оставляет путь при панике. В материале найдёте обходы: ручная реализация Future, готовое значение из std, сворачивание await через pattern matching и передача данных по ссылке.
#rust
Post #14589
9.34K

- 💅 15
- ❤ 7
- 👍 5
- 👏 3
- ⚡ 2
- 🔥 2
- 🎉 2
- 🐳 2
- ✍ 1