pub fn walk_to_expr_usage<'tcx, T>(
    cx: &LateContext<'tcx>,
    e: &Expr<'tcx>,
    f: impl FnMut(HirId, Node<'tcx>, HirId) -> ControlFlow<T>
) -> Option<ControlFlow<T, (Node<'tcx>, HirId)>>
Expand description

Walks up the HIR tree from the given expression in an attempt to find where the value is consumed.

Termination has three conditions:

  • The given function returns Break. This function will return the value.
  • The consuming node is found. This function will return Continue(use_node, child_id).
  • No further parent nodes are found. This will trigger a debug assert or return None.

This allows walking through if, match, break, and block expressions to find where the value produced by the expression is consumed.