Я писал плагин 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>>),
// ...
}
// ...