bitio-rs

Crates.iobitio-rs
lib.rsbitio-rs
version0.1.2
created_at2025-07-01 11:12:25.103183+00
updated_at2025-07-03 11:27:47.470572+00
description🚀A lightweight Rust library for bit-level I/O: read, peek, write, with both big-endian and little-endian support.
homepage
repositoryhttps://github.com/F2077/bitio-rs
max_upload_size
id1733119
size111,946
(F2077)

documentation

README

bitio-rs

🚀A lightweight Rust library for bit-level I/O: read, write, peek, with both big-endian and little-endian support.

Features

  • Read arbitrary-length bit fields from any Read source (1–64 bits)
  • Write arbitrary-length bit fields to any Write sink
  • Peek bits without consuming them
  • Fully endian-aware (BigEndian / LittleEndian)
  • Two performance tiers:
    • Standard: Safe, validated standard implementation
    • Fast: 18-21x faster for performance-critical use
  • minimal dependencies

Installation

Add the following to your Cargo.toml:

[dependencies]
bitio-rs = "0.1.2"

Quickstart

See quickstart.rs

Choosing an Implementation

  • Standard BitReader:

    • Full error checking
    • Recommended for general use
  • BulkBitReader

    • For bulk read
    • Slower than the standard version
  • FastBitReader:

    • 18-21x faster (see benchmarks)
    • Use at your own risk

Performance Comparison

Benchmarks measured on Apple M4 (16GB RAM):

Implementation Median Time Relative Speed Notes
(Standard) BitReader (Big) 5.3282 μs Baseline (1.0x)
(Standard) BitReader (Little) 5.5700 μs 0.96x
BulkBitReader (Big) 15.009 μs 2.82x slower
BulkBitReader (Little) 15.432 μs 2.77x slower
FastBitReaderBig 295.46 ns 18.0x faster incompatible API
FastBitReaderLittle 264.06 ns 21.1x faster incompatible API

Performance vs Compatibility Tradeoff: Fast implementations achieve 10-21x speedup but:

  • Incompatible API
  • Recommended only for performance-critical sections
Commit count: 0

cargo fmt