Rust Async Await конечный автомат получает промежуточное представление

В Rust Async Await реализован с помощью конечных автоматов. Итак, есть ли способ просмотреть это промежуточное представление конечного автомата для целей обучения?

Почему Python в конце концов умрет
Почему Python в конце концов умрет
Последние 20 лет были действительно хорошими для Python. Он прошел путь от "просто языка сценариев" до основного языка, используемого для написания...
1
0
69
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете посмотреть выходные данные компилятора MIR. Это графическое представление потока управления с базовыми блоками и переходами. Для функции или блока async вы увидите, что тело MIR начинается с базового блока с терминатором switchInt, то есть таблицы переходов: в зависимости от текущего состояния конечного автомата происходит переход к определенному базовому блоку.

Вы можете увидеть вывод MIR на игровой площадке Rust , выбрав вывод MIR в меню «...» в верхнем левом углу. Альтернативно, вы можете запросить у компилятора Rust выходные данные MIR. См. здесь для более подробной информации, но вызов должен быть таким: rustc [filename].rs --emit mir

Другие вопросы по теме