This crate provides the Be
(big-endian) and Le
(little-endian) byte-order-aware numeric types.
The core API looks roughly like this (correspondingly for Be
):
#[repr(transparent)]
pub struct<T> Le(pub T);
impl Le<T: Integer> {
pub const fn from_ne(n: T) -> Self;
pub const fn from_be(n: Be<T>) -> Self;
pub const fn to_ne(self) -> T;
pub const fn to_be(self) -> Be<T>;
pub const fn to_be_bytes(self) -> [u8; mem::size_of::<Self>()];
pub const fn to_le_bytes(self) -> [u8; mem::size_of::<Self>()];
pub const fn to_ne_bytes(self) -> [u8; mem::size_of::<Self>()];
pub const fn from_be_bytes(bytes: [u8; mem::size_of::<Self>()]) -> Self;
pub const fn from_le_bytes(bytes: [u8; mem::size_of::<Self>()]) -> Self;
pub const fn from_ne_bytes(bytes: [u8; mem::size_of::<Self>()]) -> Self;
}
The types also implement appropriate traits from core::cmp
, core::convert
, core::fmt
, and core::ops
and provide additional helper methods for computations.
For API documentation, see the docs.
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.