# Bit Position This is a position counter of a real bit in an `R` memory element. Like [`BitIdx`], it is a counter in the ring `0 .. R::BITS`. It marks a real bit in memory, and is the shift distance in the expression `1 << n`. It can only be produced by applying [`BitOrder::at`] to an existing `BitIdx` produced by `bitvec`. ## Type Parameters - `R`: The register element that this position governs. ## Validity Values of this type are **required** to be in the range `0 .. R::BITS`. Any value not less than [`R::BITS`] makes the program invalid, and will likely cause either a crash or incorrect memory access. ## Construction This type is publicly constructible, but is only correct to do so within an implementation of `BitOrder::at`. `bitvec` will only request its creation through that trait implementation, and has no sites that can publicly accept untrusted values. [`BitIdx`]: crate::index::BitIdx [`BitOrder::at`]: crate::order::BitOrder::at [`R::BITS`]: funty::Integral::BITS