This trait extends Radium
in order to manipulate specific bits in an element according to the crate’s logic. It drives all memory access instructions and is responsible for translating the bit-selection logic of the index
module into real effects.
This is blanket-implemented on all types that permit shared-mutable memory access via the radium
crate. Its use is constrained in the store
module. It is required to be a publicly accessible symbol, as it is exported in other traits, but it is a crate-internal item and is not part of the public API. Its blanket implementation for <R: Radium>
prevents any other implementations from being written.
This trait is automatically implemented for all types that implement Radium
, and relies exclusively on Radium
’s API and implementations for its work. In particular, Radium
has no functions which operate on pointers: it exclusively operates on memory through references. Since references must always refer to initialized memory, BitAccess
and, by extension, all APIs in bitvec
that touch memory, cannot be used to operate on uninitialized memory in any way.
While you may create a bitvec
pointer object that targets uninitialized memory, you may not dereference it until the targeted memory has been wholly initialized with integer values.
This restriction cannot be loosened without stable access to pointer-based atomic intrinsics in the Rust standard library and corresponding updates to the Radium
trait.
Do not attempt to access uninitialized memory through bitvec
. Doing so will cause bitvec
to produce references to uninitialized memory, which is undefined behavior.