在 Rust 中,Async Await 是使用状态机实现的。那么有什么方法可以查看状态机的中间表示以用于学习目的吗?
您可以查看编译器的 MIR 输出。这是一个控制流图表示,具有基本块和跳转。对于
async
函数或块,您将看到 MIR 主体以带有 switchInt
终止符的基本块开始,即跳转表:根据状态机的当前状态,跳转到特定的基本块。
您可以通过在左上角的“...”菜单中选择 MIR 输出,在 Rust Playground 上看到 MIR 输出。或者,您可以向 Rust 编译器询问 MIR 输出。有关更多详细信息,请参阅here,但调用应类似于:
rustc [filename].rs --emit mir