Почему rustc моделирует AST и HIR, используя два разных представления в памяти?
Рассмотрим эти 2 реализации
ExprKind
в
rustc
:
В коде AST используются упакованные типы с широким использованием векторов.
Код HIR использует заимствованные типы с массивами. Я предполагаю, что они используют арену для распределения.
Что движет этими совершенно разными способами обращения с памятью для двух разных представлений кода?