is_ancestor_or_same_capture in rustc_mir_build::builder::expr::as_place - Rust
Description: Return true if the `proj_possible_ancestor` represents an ancestor path to `proj_capture` or `proj_possible_ancestor` is same as `proj_capture`, assuming they both start off of the same root variable.

Skip to main content

## is_ancestor_or_same_capture

# Function is_ancestor_or_same_capture

Source

    fn is_ancestor_or_same_capture(
        proj_possible_ancestor: &[ProjectionKind],
        proj_capture: &[ProjectionKind],
    ) -> bool

Expand description

Return true if the `proj_possible_ancestor` represents an ancestor path to `proj_capture` or `proj_possible_ancestor` is same as `proj_capture`, assuming they both start off of the same root variable.

Note: It’s the caller’s responsibility to ensure that both lists of projections start off of the same root variable.

Eg: 1. `foo.x` which is represented using `projections=[Field(x)]` is an ancestor of `foo.x.y` which is represented using `projections=[Field(x), Field(y)]`. Note both `foo.x` and `foo.x.y` start off of the same root variable `foo`. 2. Since we only look at the projections here function will return `bar.x` as a valid ancestor of `foo.x.y`. It’s the caller’s responsibility to ensure that both projections list are being applied to the same root variable.