2 unstable releases

0.2.0 Sep 2, 2020
0.1.0 Feb 1, 2020

#12 in #struct-macro

Download history 3/week @ 2026-02-23 34/week @ 2026-03-16 14/week @ 2026-03-23 4/week @ 2026-04-06 4/week @ 2026-04-13 2/week @ 2026-04-20 115/week @ 2026-04-27 4402/week @ 2026-05-04 6575/week @ 2026-05-11 867/week @ 2026-05-18 247/week @ 2026-05-25 14/week @ 2026-06-01 39/week @ 2026-06-08

1,168 downloads per month
Used in 2 crates

Apache-2.0

16KB
319 lines

Provides a macro to allows creation of a simple byte-array backed structs. Such struct has a predefined size and allocated on stack.

Usage

Dependency

[dependencies]
byte-array-struct = "0.2"

Example

// create struct named Address backed by [u8; 24]
// basically a shortcut to `pub struct Address([u8; 24]);`
byte_array_struct!(
    pub struct Address(24);
);

impl Address {
    // any additional functionality for Address type
}

// passed as a value on stack
fn send(to: Address) {
   // ...
}

fn main() {
  //accepts hex, which can also be prefixed with 0x
  let foo = Address::from_str("0123456789abcdef0123456789abcdef0123456789abcdef").unwrap();

  send(foo);
}

Provides

Macro provides implementation for following traits:

  • .deref()
  • .from_str(s), which accepts a hex string with the length of target array; may be optionally prefixed with 0x
  • .to_string()
  • .from([u8; ...]) and .from(&[u8; ...]), where ... is the defined size
  • .try_from(Vec<u8>) and .try_from(&[u8])
  • .into(Vec<u8>) and .into([u8; ...])
  • .serialize and .deserialize for Serde, with with-serde feature enabled (not enabled by default)

Features

  • with-serde to implement serialization/deserialization with Serde. Uses Hex encoded strings.

Dependencies

~17–255KB