pigeon 0.1.0

Utilities for efficient packing and unpacking of big-endian binary data
Documentation
#![forbid(missing_docs)]
#![forbid(unsafe_code)]

//! A crate for reading/writing from/to byte buffers.
//!
//! This crate uses big-endian for all numbers.
//!
//! # Usage Example
//!
//! ```rust
//! use {
//!     pigeon::{
//!         FrameWriter,
//!         FrameReader,
//!         FrameTarget,
//!         Grab,
//!         Dump,
//!         ShortStr,
//!     },
//! };
//!
//! pub struct Animal {
//!     pub position: (f32, f32, f32),
//!     pub fluffy: bool,
//!     pub name: String,
//!     pub weight: f32,
//! }
//!
//! impl Dump for Animal {
//!     fn dump_to<T: FrameTarget>(&self, writer: &mut FrameWriter<T>) {
//!         writer.write(self.position);
//!         writer.write(self.fluffy);
//!         writer.write(ShortStr(&self.name));
//!         writer.write(self.weight);
//!     }
//! }
//!
//! impl<'a> Grab<'a> for Animal {
//!     fn grab_from(reader: &mut FrameReader<'a>) -> Option<Self> {
//!         let position = reader.read()?;
//!         let fluffy = reader.read()?;
//!         let ShortStr(name) = reader.read()?;
//!         let weight = reader.read()?;
//!         Some(Animal {
//!             position,
//!             fluffy,
//!             name: name.to_owned(),
//!             weight,
//!         })
//!     }
//! }
//! ```

mod adapters;
mod dump;
mod grab;
mod impls;

pub use {
    adapters::ShortStr,
    dump::{dump_to_buffer, Dump, FrameTarget, FrameWriter},
    grab::{grab_from_buffer, FrameReader, Grab},
};