2017-06-03 124 views
3

除了可以推断loop正文中未初始化值的事实之外,是否还有其他令人信服的理由让loop存在?Rust编译器用`loop`和`true`做了什么优化?

+0

相关问题:https://stackoverflow.com/q/28892351/1233251 –

+0

谢谢。但是,我认为我的陈述:“它可以推断出在循环体内设置的未初始化值的事实已经暗示我有兴趣知道其他方法可以为循环提供更多的编译器优化途径。 –

+0

当然,我不会称之为重复。但它确实包含重要信息,包括外部资源。 –

回答

1

除了你陈述你的意图,没有区别。一旦编译器发生规范化,所有循环都是相同的。

请参阅example of a loop in the Rust playgroundthe same example with a while true。生成的程序集完全相同。编译器会给出while true的警告 - 例如使用loop来代替。

+0

你能以任何方式证明这一点吗? – Shepmaster

+0

@Shepmaster如果需要证明,您可以比较MIR或ASM输出 – the8472

+0

@ the8472只能证明程序集(和推测相关的优化)对于单个案例*是相同的*,这是一个相当低的栏。我可以想象即使达到那里的路径完全不同(因此具有不同的可用优化)而编译成相同程序集的非常不同的代码示例。 – Shepmaster