pub struct UseAccumulator<'a, BlockId, DefId, DefType> { /* private fields */ }
Expand description
Incremental tracker for definition uses (and CFG edges between blocks), accumulating the complete set of transitive uses for each block, also known as the SSA “live set” (corresponding to the starting position of each block).
Implementations§
Source§impl<'a, BlockId: Copy + Eq + Hash, DefId: Copy + Eq + Hash, DefType: Copy> UseAccumulator<'a, BlockId, DefId, DefType>
impl<'a, BlockId: Copy + Eq + Hash, DefId: Copy + Eq + Hash, DefType: Copy> UseAccumulator<'a, BlockId, DefId, DefType>
pub fn new(def_map: &'a DefMap<BlockId, DefId, DefType>) -> Self
pub fn into_inter_block_uses( self, ) -> impl Iterator<Item = (BlockId, IndexMap<DefId, DefType, BuildHasherDefault<FxHasher>>)> + 'a
pub fn add_use(&mut self, block_id: BlockId, used_def_id: DefId)
pub fn add_edge(&mut self, source_block_id: BlockId, target_block_id: BlockId)
Auto Trait Implementations§
impl<'a, BlockId, DefId, DefType> Freeze for UseAccumulator<'a, BlockId, DefId, DefType>
impl<'a, BlockId, DefId, DefType> RefUnwindSafe for UseAccumulator<'a, BlockId, DefId, DefType>
impl<'a, BlockId, DefId, DefType> Send for UseAccumulator<'a, BlockId, DefId, DefType>
impl<'a, BlockId, DefId, DefType> Sync for UseAccumulator<'a, BlockId, DefId, DefType>
impl<'a, BlockId, DefId, DefType> Unpin for UseAccumulator<'a, BlockId, DefId, DefType>
impl<'a, BlockId, DefId, DefType> UnwindSafe for UseAccumulator<'a, BlockId, DefId, DefType>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more