Я писал плагин Rust lint, когда обнаружил, что Rust использует разные типы для представления , а затем (Block) и else (Expr) частей if в libsyntax::ast::ExprKind и librustc::hir::Expr_.
Мне нужно, чтобы они оба имели общие типы.
Должен ли я использовать явное совпадение над hir::Expr_::ExprBlock, иначе часть может быть чем-то другим, и мне нужно сделать более умное сравнение?
Из источника:
// ...
pub enum Expr_ {
// ...
/// An `if` block, with an optional else block
///
/// `if expr { block } else { expr }`
ExprIf(P<Expr>, P<Block>, Option<P<Expr>>),
// ...
}
// ...