#endian #byteorder #order #byte #defined #type #default

no-std endian-type-rs

Type safe wrappers for types with a defined byte order

2 releases

Uses old Rust 2015

0.1.4 May 28, 2020
0.1.3 May 28, 2020

#748 in Embedded development

Download history 386/week @ 2023-11-29 427/week @ 2023-12-06 369/week @ 2023-12-13 511/week @ 2023-12-20 337/week @ 2023-12-27 218/week @ 2024-01-03 252/week @ 2024-01-10 321/week @ 2024-01-17 109/week @ 2024-01-24 120/week @ 2024-01-31 55/week @ 2024-02-07 82/week @ 2024-02-14 321/week @ 2024-02-21 286/week @ 2024-02-28 462/week @ 2024-03-06 509/week @ 2024-03-13

1,591 downloads per month
Used in 2 crates (via fdt-rs)

MIT license

9KB
181 lines

endian-type-rs

A fork of endian-type which includes support for no-std and the From trait.

Usage

Add this to your Cargo.toml:

[dependencies.endian-type-rs]
version = "0.1.4"

and this to your crate root:

extern crate endian_type_rs;

Features

This crate can be used without the standard library (#![no_std]) by disabling the default std feature. Use this in Cargo.toml:

[dependencies.endian-type-rs]
version = "0.1.4"
default-features = false
# features = ["num"]    # <--- Uncomment if you wish to include support for num::ToPrimitive

The "num" feature will add additional definitions for simplified casting via the num crate "num".

Previously casting between the internal types and another built-in numeric type required a decent amount of boilerplate. In the worst case you needed to specify both the current Big/LittleEndian's underlying type as well as the type you were trying to cast to. E.g.

let val: u32_be = u32_be::from(10);
let addr = u32::from(val) as usize;

This isn't much overhead here where the type is obvious, however if you change the underlying type of "val" in the above example, you must change every single cast. Now the above becomes:

let val: u32_be = u32_be::from(10);
let addr = val.to_usize().unwrap();

Dependencies

~73KB