+fn as_while_cond(expr: &hir::Expr) -> Option<&hir::Expr> {
+ if let hir::ExprKind::Loop(blk, ..) = &expr.node {
+ if let Some(match_expr) = &blk.expr {
+ if let hir::ExprKind::Match(cond, .., hir::MatchSource::WhileDesugar)
+ = &match_expr.node
+ {
+ if let hir::ExprKind::DropTemps(cond) = &cond.node {
+ return Some(cond);
+ }
+ }
+ }
+ }
+
+ None
+}
+