我正在用 Rust 重写一个 C++ 程序,有一件事让我情绪激动。在第一次迭代时,它给了我 50 个错误,然后我一个一个地解决它们,就在我解决最后一个错误时,编译器给了我 60 个新错误,然后我解决了它们并得到另外几十个错误。

最后一组错误似乎是由借用检查器专门生成的。那么为什么会发生这种情况呢?编译过程是否有某些层次或阶段,如果有,它们是什么?

我想知道这一点,因为我喜欢可预测性,不喜欢情绪化的过山车(我也想知道这次冒险什么时候结束)。

最佳答案

是的,有一个命令:

  • 语法错误,来自解析源代码
  • 非生命周期类型错误,来自类型检查器
  • 生命周期错误,来自借用检查器

  • 前两个是大多数类型语言所共有的。在检查它们之前,您需要建立某种类型关系的模型,如果语法不正确,这将很快失败。在 Rust 中,一旦基本类型检查通过,后续步骤是验证所有借用是否有效。

    您可以在博客文章 Introducing MIR 中阅读更多内容。

    关于rust - 编译器的操作是否有某种顺序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58932599/

    10-13 09:11