# Trait rustc_mir_dataflow::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>,
            statement_effect: Option<&dyn Fn(BasicBlock, &mut A::Domain)>
        ) -> TerminatorEdges<'mir, 'tcx>
           where A: Analysis<'tcx>;
        fn gen_kill_statement_effects_in_block<'tcx, A>(
            analysis: &mut A,
            trans: &mut GenKillSet<A::Idx>,
            block: BasicBlock,
            block_data: &BasicBlockData<'tcx>
        )
           where A: GenKillAnalysis<'tcx>;
        fn visit_results_in_block<'mir, 'tcx, F, R>(
            state: &mut F,
            block: BasicBlock,
            block_data: &'mir BasicBlockData<'tcx>,
            results: &mut R,
            vis: &mut impl ResultsVisitor<'mir, 'tcx, R, FlowState = F>
        )
           where R: ResultsVisitable<'tcx, FlowState = F>;
        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§

source

#### const IS_FORWARD: bool

## Provided Associated Constants§

source

#### const IS_BACKWARD: bool = _

## 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 `EffectIndex`s.

`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>, statement_effect: Option<&dyn Fn(BasicBlock, &mut A::Domain)> ) -> TerminatorEdges<'mir, 'tcx>
where A: Analysis<'tcx>,

source

#### fn gen_kill_statement_effects_in_block<'tcx, A>( analysis: &mut A, trans: &mut GenKillSet<A::Idx>, block: BasicBlock, block_data: &BasicBlockData<'tcx> )
where A: GenKillAnalysis<'tcx>,

source

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

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>,

## Object Safety§

This trait is not object safe.

## Implementors§

source§

### impl Direction for Backward

source§

#### const IS_FORWARD: bool = false

source§

### impl Direction for Forward

source§

#### const IS_FORWARD: bool = true