Rust Async Await 状态机获取中间表示

问题描述 投票:0回答:1

在 Rust 中,Async Await 是使用状态机实现的。那么有什么方法可以查看状态机的中间表示以用于学习目的吗?

rust cargo
1个回答
0
投票

您可以查看编译器的 MIR 输出。这是一个控制流图表示,具有基本块和跳转。对于

async
函数或块,您将看到 MIR 主体以带有
switchInt
终止符的基本块开始,即跳转表:根据状态机的当前状态,跳转到特定的基本块。

您可以通过在左上角的“...”菜单中选择 MIR 输出,在 Rust Playground 上看到 MIR 输出。或者,您可以向 Rust 编译器询问 MIR 输出。有关更多详细信息,请参阅here,但调用应类似于:

rustc [filename].rs --emit mir

© www.soinside.com 2019 - 2024. All rights reserved.