rustc_mir_dataflow

Trait Direction

Source
pub trait Direction {
    const IS_FORWARD: bool;
    const IS_BACKWARD: bool = _;

    // Required methods
    fn apply_effects_in_range<'tcx, A>(
        analysis: &mut A,
        state: &mut A::Domain,
        block: BasicBlock,
        block_data: &BasicBlockData<'tcx>,
        effects: RangeInclusive<EffectIndex>,
    )
       where A: Analysis<'tcx>;
    fn apply_effects_in_block<'mir, 'tcx, A>(
        analysis: &mut A,
        state: &mut A::Domain,
        block: BasicBlock,
        block_data: &'mir BasicBlockData<'tcx>,
    ) -> TerminatorEdges<'mir, 'tcx>
       where A: Analysis<'tcx>;
    fn visit_results_in_block<'mir, 'tcx, D, R>(
        state: &mut D,
        block: BasicBlock,
        block_data: &'mir BasicBlockData<'tcx>,
        results: &mut R,
        vis: &mut impl ResultsVisitor<'mir, 'tcx, R, Domain = D>,
    )
       where R: ResultsVisitable<'tcx, Domain = D>;
    fn join_state_into_successors_of<'tcx, A>(
        analysis: &mut A,
        body: &Body<'tcx>,
        exit_state: &mut A::Domain,
        block: BasicBlock,
        edges: TerminatorEdges<'_, 'tcx>,
        propagate: impl FnMut(BasicBlock, &A::Domain),
    )
       where A: Analysis<'tcx>;
}

Required Associated Constants§

Provided Associated Constants§

Required Methods§

Source

fn apply_effects_in_range<'tcx, A>( analysis: &mut A, state: &mut A::Domain, block: BasicBlock, block_data: &BasicBlockData<'tcx>, effects: RangeInclusive<EffectIndex>, )
where A: Analysis<'tcx>,

Applies all effects between the given EffectIndexs.

effects.start() must precede or equal effects.end() in this direction.

Source

fn apply_effects_in_block<'mir, 'tcx, A>( analysis: &mut A, state: &mut A::Domain, block: BasicBlock, block_data: &'mir BasicBlockData<'tcx>, ) -> TerminatorEdges<'mir, 'tcx>
where A: Analysis<'tcx>,

Source

fn visit_results_in_block<'mir, 'tcx, D, R>( state: &mut D, block: BasicBlock, block_data: &'mir BasicBlockData<'tcx>, results: &mut R, vis: &mut impl ResultsVisitor<'mir, 'tcx, R, Domain = D>, )
where R: ResultsVisitable<'tcx, Domain = D>,

Source

fn join_state_into_successors_of<'tcx, A>( analysis: &mut A, body: &Body<'tcx>, exit_state: &mut A::Domain, block: BasicBlock, edges: TerminatorEdges<'_, 'tcx>, propagate: impl FnMut(BasicBlock, &A::Domain), )
where A: Analysis<'tcx>,

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§