1 неделю назад
async/await это Enum
Когда вы пишете async fn, компилятор превращает функцию в структуру (или enum), которая реализует Future. Этот enum хранит: // То, что пишет программист async fn fetch_data(url: String) -> Result<Data, Error> { let req = build_request(&url); // локальная переменная let resp = client.send(req).await?; // ← точка приостановки let data = process(resp).await?; // ← ещё одна Ok(data) } Компилятор примерно генерирует такое: enum FetchDataStateMachine { // Начальное состояние (до первого await) Start { url: String, // захваченные параметры }, // После первого ...