pub trait Direction {
const IS_FORWARD: bool;
const IS_BACKWARD: bool = _;
// Required methods
fn first_index(block_data: &BasicBlockData<'_>) -> EffectIndex;
fn next_index(idx: EffectIndex) -> EffectIndex;
fn apply_effects_in_block<'mir, 'tcx, A>(
analysis: &A,
body: &Body<'tcx>,
state: &mut A::Domain,
block: BasicBlock,
block_data: &'mir BasicBlockData<'tcx>,
propagate: impl FnMut(BasicBlock, &A::Domain),
)
where A: Analysis<'tcx>;
fn visit_results_in_block<'mir, 'tcx, A>(
analysis: &A,
state: &mut A::Domain,
block: BasicBlock,
block_data: &'mir BasicBlockData<'tcx>,
vis: &mut impl ResultsVisitor<'tcx, A>,
)
where A: Analysis<'tcx>;
}Required Associated Constants§
const IS_FORWARD: bool
Provided Associated Constants§
const IS_BACKWARD: bool = _
Required Methods§
Sourcefn first_index(block_data: &BasicBlockData<'_>) -> EffectIndex
fn first_index(block_data: &BasicBlockData<'_>) -> EffectIndex
Returns the first statement index for this direction. (0 when going forward and
statements.len() when going backward.)
Sourcefn next_index(idx: EffectIndex) -> EffectIndex
fn next_index(idx: EffectIndex) -> EffectIndex
Returns the next index for this direction.
Sourcefn apply_effects_in_block<'mir, 'tcx, A>(
analysis: &A,
body: &Body<'tcx>,
state: &mut A::Domain,
block: BasicBlock,
block_data: &'mir BasicBlockData<'tcx>,
propagate: impl FnMut(BasicBlock, &A::Domain),
)where
A: Analysis<'tcx>,
fn apply_effects_in_block<'mir, 'tcx, A>(
analysis: &A,
body: &Body<'tcx>,
state: &mut A::Domain,
block: BasicBlock,
block_data: &'mir BasicBlockData<'tcx>,
propagate: impl FnMut(BasicBlock, &A::Domain),
)where
A: Analysis<'tcx>,
Called by iterate_to_fixpoint during initial analysis computation.
Sourcefn visit_results_in_block<'mir, 'tcx, A>(
analysis: &A,
state: &mut A::Domain,
block: BasicBlock,
block_data: &'mir BasicBlockData<'tcx>,
vis: &mut impl ResultsVisitor<'tcx, A>,
)where
A: Analysis<'tcx>,
fn visit_results_in_block<'mir, 'tcx, A>(
analysis: &A,
state: &mut A::Domain,
block: BasicBlock,
block_data: &'mir BasicBlockData<'tcx>,
vis: &mut impl ResultsVisitor<'tcx, A>,
)where
A: Analysis<'tcx>,
Called by ResultsVisitor to recompute the analysis domain values for
all locations in a basic block (starting from entry_state and to
visit them with vis.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".