num_packer/lib.rs
1//! Provides traits and implementations for packing and unpacking two numbers into a single value.
2//!
3//! ## Implementations
4//!
5//! * Pack two `bool` into `u8`/`i8`, `u16`/`i16`, `u32`/`i32`, `u64`/`i64`, `usize`/`isize`
6//! * Pack two `u8` into `u16`/`i16`, `u32`/`i32`, `u64`/`i64`, `usize`/`isize`
7//! * Pack two `u16` into `u32`/`i32`, `u64`/`i64`, `usize`/`isize`(if target pointer width is 32 or 64)
8//! * Pack two `u32` into `u64`/`i64`, `usize`/`isize`(if target pointer width is 64)
9//! * Pack two `i8` into `u16`/`i16`, `u32`/`i32`, `u64`/`i64`, `usize`/`isize`
10//! * Pack two `i16` into `u32`/`i32`, `u64`/`i64`, `usize`/`isize`(if target pointer width is 32 or 64)
11//! * Pack two `i32` into `u64`/`i64`, `usize`/`isize`(if target pointer width is 64)
12//! * Pack two `f32` into `u64`/`i64`, `usize`/`isize`(if target pointer width is 64)
13//!
14//! ## Example
15//!
16//! Pack two `u8` into `u16`.
17//!
18//! ```rust
19//! use num_packer::U8Packer;
20//!
21//! let packed = u16::pack_u8(200, 55);
22//! let (first, second) = packed.unpack_u8();
23//! assert_eq!((first, second), (200, 55));
24//! ```
25//!
26
27#![no_std]
28
29mod impls;
30mod packer;
31
32pub use packer::*;