# Bit-Level Access Instructions 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 `` prevents any other implementations from being written. ## Implementation and Safety Notes 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. [`Radium`]: radium::Radium [`index`]: crate::index [`radium`]: radium [`store`]: crate::store