#hex-string #hex #string

hex_str

A library that helps handle hexadecimal strings

4 releases (2 breaking)

0.3.0 Oct 20, 2024
0.2.0 Aug 29, 2024
0.1.1 May 16, 2024
0.1.0 May 16, 2024

#42 in Value formatting

Download history 26609/week @ 2024-07-29 38540/week @ 2024-08-05 41578/week @ 2024-08-12 51975/week @ 2024-08-19 52635/week @ 2024-08-26 38833/week @ 2024-09-02 40236/week @ 2024-09-09 29027/week @ 2024-09-16 21935/week @ 2024-09-23 23314/week @ 2024-09-30 17507/week @ 2024-10-07 12715/week @ 2024-10-14 9226/week @ 2024-10-21 6489/week @ 2024-10-28 7730/week @ 2024-11-04 7434/week @ 2024-11-11

31,463 downloads per month

Apache-2.0 OR MIT

43KB
839 lines

hex_str

Handle and parse hex strings of constant and variable lengths

Example:

Example hex string, an md5 of an empty file:

d41d8cd98f00b204e9800998ecf8427e
use hex_str::HexString;

let s = "d41d8cd98f00b204e9800998ecf8427e";

// constant length, encoded in the type system
let u = HexStringN::<16>::try_parse(s).unwrap();
assert_eq!(u, "d41d8cd98f00b204e9800998ecf8427e");

// variable length
let v = HexString::try_parse(s).unwrap();
assert_eq!(v, "d41d8cd98f00b204e9800998ecf8427e");

Feature flags:

  • serde - adds the ability to serialize, and deserialize HexString's, and HexStringN's using serde.
  • rand - adds implementation of rand's Standard distribution, which enables random generation of HexStringN's directly.

Using serde feature:

use hex_str::HexString;
use serde::{Deserialize, Serialize};

#[derive(Deserialize, Serialize)]
struct Example {
    md5: HexString<16>,
}

let s = r#"
    {
        "md5": "d41d8cd98f00b204e9800998ecf8427e"
    }
"#;

let example: Example = serde_json::from_str(s).unwrap();
assert_eq!(example.md5, "d41d8cd98f00b204e9800998ecf8427e");

serde_json::to_string(&example).unwrap();

Using rand feature:

use hex_str::HexString;

let _: HexString<16> = rand::random();

Dependencies

~0.3–0.9MB
~19K SLoC