pub struct SparseBitMatrix<R, C> where
R: Idx,
C: Idx, { /* fields omitted */ }
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
.
Create 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, and false otherwise.
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
?
Add the bits from row read
to the bits from row write
,
return 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.
Performs copy-assignment from source
. Read more
Formats the value using the given formatter. Read more
Creates owned data from borrowed data, usually by cloning. Read more
🔬 This is a nightly-only experimental API. (toowned_clone_into
)
recently added
Uses borrowed data to replace owned data, usually by cloning. Read more
🔬 This is a nightly-only experimental API. (try_from
)
The type returned in the event of a conversion error.
🔬 This is a nightly-only experimental API. (try_from
)
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more
type Error = <U as TryFrom<T>>::Error
🔬 This is a nightly-only experimental API. (try_from
)
The type returned in the event of a conversion error.
🔬 This is a nightly-only experimental API. (try_from
)
🔬 This is a nightly-only experimental API. (get_type_id
)
this method will likely be replaced by an associated static
Create an error for a missing method specialization. Defaults to panicking with type, trait & method names. S
is the encoder/decoder state type, T
is the type being encoded/decoded, and the arguments are the names of the trait and method that should've been overridden. Read more