endian-num 0.1.0

Byte-order-aware numeric types.
Documentation
# endian-num

[![Crates.io](https://img.shields.io/crates/v/endian-num)](https://crates.io/crates/endian-num)
[![docs.rs](https://img.shields.io/docsrs/endian-num)](https://docs.rs/endian-num)
[![CI](https://github.com/rust-osdev/endian-num/actions/workflows/ci.yml/badge.svg)](https://github.com/rust-osdev/endian-num/actions/workflows/ci.yml)

This crate provides the [`Be`] (big-endian) and [`Le`] (little-endian) byte-order-aware numeric types.

[`Be`]: https://docs.rs/endian-num/latest/endian_num/struct.Be.html
[`Le`]: https://docs.rs/endian-num/latest/endian_num/struct.Le.html

The core API looks _roughly_ like this (correspondingly for `Be`):

```rust
#[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].

[docs]: https://docs.rs/endian-num
[`core::cmp`]: https://doc.rust-lang.org/stable/core/cmp/index.html
[`core::convert`]: https://doc.rust-lang.org/stable/core/convert/index.html
[`core::fmt`]: https://doc.rust-lang.org/stable/core/fmt/index.html
[`core::ops`]: https://doc.rust-lang.org/stable/core/ops/index.html


## License

Licensed under either of

 * Apache License, Version 2.0
   ([LICENSE-APACHE]LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
 * MIT license
   ([LICENSE-MIT]LICENSE-MIT or http://opensource.org/licenses/MIT)

at your option.

### Contribution

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.