A type for storing fixed-size boolean arrays densely to optimize space Inspired by C++'s std::vector implementation # Overview `compact_bitset` adds a new container type, `CompactBitset`. A `CompactBitset` stores boolean variables so that one bit is used per `bool`. It is designed for cases where a boolean array is necessary, but `Vec` or a slice is undesired due to space requirements. The `CompactBitset` reduces size used per `bool` to an eighth of what it would otherwise be. # Details `CompactBitset` uses the proxy types `BitRef` and `BitRefMut` for indexing operations. These two types deref to `bool` and implement comparison to `bool` as well as each other. Writing to a `BitRefMut` alters the bit that it symbolically references in the `CompactBitset`. `BitRef` and `BitRefMut` contain references to their parent `CompactBitset`. Thus, any number of `BitRef`s can be borrowed from a `CompactBitset`, but only 1 `BitRefMut` may be active at a time. This allows `BitRef` and `BitRefMut` to take advantage of the safety guarantees of references. `BitIter` allows the user to immutably iterate the `CompactBitset` via a wrapper around a `BitRef` with its index incremented. It contains all standard `Iterator` functionality. `BitIterMut` may be on the roadmap, but a current implementation has not successfully been created without use of `unsafe`.