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, A>(
state: &mut A::Domain,
block: BasicBlock,
block_data: &'mir BasicBlockData<'tcx>,
results: &mut Results<'tcx, A>,
vis: &mut impl ResultsVisitor<'mir, 'tcx, A>,
)
where A: Analysis<'tcx>;
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§
const IS_FORWARD: bool
Provided Associated Constants§
const IS_BACKWARD: bool = _
Required Methods§
Sourcefn 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_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.
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, A>(
state: &mut A::Domain,
block: BasicBlock,
block_data: &'mir BasicBlockData<'tcx>,
results: &mut Results<'tcx, A>,
vis: &mut impl ResultsVisitor<'mir, 'tcx, A>,
)where
A: Analysis<'tcx>,
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.