# In-Element Bit Ordering
The `bitvec` memory model is designed to separate the semantic ordering of bits
in an abstract memory space from the electrical ordering of latches in real
memory. This module provides the bridge between the two domains with the
[`BitOrder`] trait and implementations of it.
The `BitOrder` trait bridges semantic indices (marked by the [`BitIdx`] type) to
electrical position counters (morked by the [`BitPos`] type) or selection masks
(marked by the [`BitSel`] and [`BitMask`] types).
Because `BitOrder` is open for client crates to implement, this module also
provides verification functions for the test suite that ensure a given
`BitOrder` implementation is correct for all the register types that it will
govern. See the [`verify_for_type`] or [`verify`] functions for more
information.
[`BitIdx`]: crate::index::BitIdx
[`BitMask`]: crate::index::BitMask
[`BitOrder`]: self::BitOrder
[`BitPos`]: crate::index::BitPos
[`BitSel`]: crate::index::BitSel
[`verify`]: self::verify
[`verify_for_type`]: self::verify_for_type