Struct rustc_ap_rustc_index::bit_set::SparseBitMatrix [−][src]
Expand description
A fixed-column-size, variable-row-size 2D bit matrix with a moderately sparse representation.
Initially, every row has no explicit representation. If any bit within a
row is set, the entire row is instantiated as Some(<HybridBitSet>)
.
Furthermore, any previously uninstantiated rows prior to it will be
instantiated as None
. Those prior rows may themselves become fully
instantiated later on if any of their bits are set.
R
and C
are index types used to identify rows and columns respectively;
typically newtyped usize
wrappers, but they can also just be usize
.
Implementations
Creates a new empty sparse bit matrix with no rows or columns.
Sets the cell at (row, column)
to true. Put another way, insert
column
to the bitset for row
.
Returns true
if this changed the matrix.
Do the bits from row
contain column
? Put another way, is
the matrix cell at (row, column)
true? Put yet another way,
if the matrix represents (transitive) reachability, can
row
reach column
?
Adds the bits from row read
to the bits from row write
, and
returns true
if anything changed.
This is used when computing transitive reachability because if
you have an edge write -> read
, because in that case
write
can reach everything that read
can (and
potentially more).
Union a row, from
, into the into
row.
Insert all bits in the given row.
Iterates through all the columns set to true in a given row of the matrix.
Trait Implementations
Auto Trait Implementations
impl<R, C> RefUnwindSafe for SparseBitMatrix<R, C> where
C: RefUnwindSafe,
impl<R, C> Send for SparseBitMatrix<R, C> where
C: Send,
impl<R, C> Sync for SparseBitMatrix<R, C> where
C: Sync,
impl<R, C> Unpin for SparseBitMatrix<R, C> where
C: Unpin,
impl<R, C> UnwindSafe for SparseBitMatrix<R, C> where
C: UnwindSafe,
Blanket Implementations
Mutably borrows from an owned value. Read more