Crate serde_hex

Source
Expand description

The serde-hex crate contains various utilities for Serialization/Deserialization of hexadecimal values using serde.

The core utility of this crate is the SerHex trait. Once implemented, SerHex allows for easy configuration of hexadecimal serialization/deserialization with serde-derive:

#[macro_use]
extern crate serde_derive;
extern crate serde_hex;
use serde_hex::{SerHex,StrictPfx};

#[derive(Debug,Serialize,Deserialize)]
struct Foo {
   #[serde(with = "SerHex::<StrictPfx>")]
   bar: [u8;32]
}

The above example will cause serde to serialize Bar into a hexadecimal string with strict sizing (padded with leading zeroes), and prefixing (leading 0x). The possible configurations allow for any combination of strict/compact representations, prefixing, and capitalizing (e.g.; Compact, StrictCapPfx, etc…).

This crate provides implementations of SerHex for all unsigned integer types, as well as generic impls for arrays of types which implement SerHex. The generic impls apply only to strict variants of the trait, and only for arrays of length 1 through 64 (no impl is provided for arrays of length 0 since there isn’t really a reasonable way to represent a zero-sized value in hex).

Re-exports§

Modules§

  • SerHex configuration variants.
  • Collection of useful macros.
  • Miscellaneous type used by this crate.
  • various helper functions.

Macros§

Traits§

  • Trait specifying custom serialization and deserialization logic from a hexadecimal string to some arbitrary type. This trait can be used to apply custom parsing when using serde’s #[derive(Serialize,Deserialize)] flag. Just add #[serde(with = "SerHex")] above any fields which implement this trait. Simplistic default implimentations for the the serialize and deserialize methods are provided based on into_hex_raw and from_hex_raw respectively.
  • Variant of SerHex for serializing/deserializing Option types.
  • Variant of SerHex for serializing/deserializing sequence types as contiguous hexadecimal strings.