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§

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