bits-io 0.6.0

Bit-level IO operations
Documentation
# bits-io

> **Flexible bit- and byte-level I/O operations for Rust.**

**bits-io** provides types and traits for handling both bits and bytes seamlessly.

While traditional Rust types like [`Bytes`](https://docs.rs/bytes) and
[`Buf`](https://docs.rs/bytes) (and their mutable counterparts) as well as the
standard library’s
[`Cursor`](https://doc.rust-lang.org/std/io/struct.Cursor.html),
[`Read`](https://doc.rust-lang.org/std/io/trait.Read.html), and
[`Write`](https://doc.rust-lang.org/std/io/trait.Write.html) operate primarily
at the byte level, **bits-io** extends these capabilities by offering
fine-grained bit-level access alongside full support for familiar byte-oriented
workflows.

The types in **bits-io** are designed as supersets of their standard
counterparts:

- You can efficiently manipulate whole bytes, slices, and streams just as before.
- You can also access and manipulate individual bits when needed, without
  sacrificing performance or ergonomics.

---

## Main Types

| Type             | Description |
|------------------|-------------|
| **Bits**         | An immutable view over underlying data that supports bit-level operations alongside traditional byte-level access—akin to `Bytes`, but with bit-level APIs as well. |
| **BitsMut**      | A mutable, growable view that lets you work at both the byte and bit levels, similar in spirit to `BytesMut` with additional fine-grained control. |
| **BitBuf**       | A read-only buffer trait that matches `bytes::Buf` and adds bit-level operations. |
| **BitBufMut**    | A mutable buffer trait that matches `bytes::BufMut` and adds bit-level operations. |
| **BitCursor**    | A cursor that tracks the current position in a buffer by bit rather than by byte; `std::io::Cursor` for bits. |
| **BitRead**      | A trait analogous to `std::io::Read`, enabling both bite- and byte-level reads. |
| **BitWrite**     | A trait analagous `std::io::Write`, enabling both bit- and byte-level writes. |

---