Rust подарил нам одну из самых мощных моделей конкурентности — безопасные, компилируемые в состояние конечные автоматы Future. Но вместе с этим он привнёс и новую сложность: отмену (cancellation). В синхронных языках отмена — экзотика, в асинхронном Rust она встроена в саму модель: любое будущее можно отменить простым drop. На RustConf 2025 эта тема снова зазвучала — и не случайно. Масштабные системы на Tokio и async Rust всё чаще упираются в баги, связанные с тем, что будущее исчезает не вовремя, оставляя после себя разрушенные инварианты или потерянные данные. ⚡ Как устроена отмена в async Rust Именно поэтому отмена кажется «естественной», но на деле она слишком лёгкая: достаточно забыть .await или выйти из select! — и часть работы теряется. 🛡️ Две категории безопасности Автор статьи предложил разделять понятия: 💥 Типичные ловушки 🔧 Практические приёмы 💡 Моё мнение Rust сделал невероятное — превратил асинхронность в проверяемую на этапе компиляции систему, где инварианты защищены
Когда Future обрывается: почему отмена в async Rust — это и сила, и слабость
4 октября 20254 окт 2025
2 мин