array-bytes 4.2.0

A collection of array/bytes/hex utilities.
Documentation

array-bytes

A Collection of Array/Bytes/Hex Utilities.

License Checks Docs GitHub tag (latest by date) GitHub code lines GitHub last commit

Abilities

TryFromHex trait

  • Convert Hex to Num
    • type &str -> isize
    • type &str -> i8
    • type &str -> i16
    • type &str -> i32
    • type &str -> i64
    • type &str -> i128
    • type &str -> usize
    • type &str -> u8
    • type &str -> u16
    • type &str -> u32
    • type &str -> u64
    • type &str -> u128

bytes prefixed functions

  • Convert Bytes to Hex
    • type &[u8] -> String

hex prefixed functions

  • Convert HexBytes to Hex
    • type &[u8] -> &str
    • e.g. b"0x..." -> "0x..."
  • Build fixed length Array from Hex
    • type &str -> [u8; N]
  • Convert Hex to Bytes
    • type &str -> Vec<u8>
  • Transform Hex to T
    • type &str -> T
    • e.g. "0x..." -> [u8; 20] -> H160

slice prefixed functions

  • Build fixed length Array from Slice
    • type &[T] -> [T; N]
  • Transform Slice to G
    • type &[T] -> G
    • e.g. &[0_u8, ...] -> [u8; 20] -> H160

vec prefixed functions

  • Build fixed length Array from Vec
    • type Vec<T> -> [T; N]
  • Transform Vec to G
    • type Vec<T> -> G
    • e.g. vec![0_u8, ...] -> [u8; 20] -> H160

Serde support (require feature serde)

  • #[serde(deserialize_with = "array_bytes::hex_deserialize_n_into")]
    • type S -> T
    • e.g. "0x..." -> H160
  • #[serde(deserialize_with = "array_bytes::de_hex2num")]
    • type S -> Num
    • e.g. "0xA" -> 10_u32
  • #[serde(deserialize_with = "array_bytes::de_hex2bytes")]
    • type S -> Vec<u8>
    • e.g. "0x00" -> vec![0_u8]

Benchmark results

array_bytes::bytes2hex  time:   [37.577 µs 37.755 µs 37.914 µs]
                        change: [+0.1343% +0.9208% +1.7020%] (p = 0.03 < 0.05)
                        Change within noise threshold.

hex::encode             time:   [56.832 µs 57.056 µs 57.258 µs]
                        change: [-0.3311% +0.1929% +0.7251%] (p = 0.47 > 0.05)
                        No change in performance detected.
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) low mild

rustc_hex::to_hex       time:   [33.522 µs 33.611 µs 33.690 µs]
                        change: [+0.0534% +0.4709% +0.9031%] (p = 0.03 < 0.05)
                        Change within noise threshold.
Found 10 outliers among 100 measurements (10.00%)
  10 (10.00%) low mild

faster_hex::hex_string  time:   [7.7683 µs 7.8169 µs 7.8819 µs]
                        change: [+3.7564% +4.6695% +5.6205%] (p = 0.00 < 0.05)
                        Performance has regressed.
Found 14 outliers among 100 measurements (14.00%)
  5 (5.00%) low severe
  5 (5.00%) low mild
  1 (1.00%) high mild
  3 (3.00%) high severe

faster_hex::hex_encode_fallback
                        time:   [7.7536 µs 7.7740 µs 7.7936 µs]
                        change: [+1.3656% +1.9964% +2.6314%] (p = 0.00 < 0.05)
                        Performance has regressed.
Found 2 outliers among 100 measurements (2.00%)
  2 (2.00%) low mild

array_bytes::hex2bytes  time:   [136.78 µs 137.66 µs 138.57 µs]
                        change: [+0.1075% +0.8175% +1.5436%] (p = 0.02 < 0.05)
                        Change within noise threshold.
Found 6 outliers among 100 measurements (6.00%)
  5 (5.00%) low mild
  1 (1.00%) high severe

array_bytes::hex2bytes_unchecked
                        time:   [103.12 µs 103.49 µs 103.82 µs]
                        change: [-0.7568% -0.2119% +0.3349%] (p = 0.44 > 0.05)
                        No change in performance detected.
Found 6 outliers among 100 measurements (6.00%)
  2 (2.00%) low severe
  4 (4.00%) low mild

hex::decode             time:   [105.65 µs 106.15 µs 106.65 µs]
                        change: [-1.4824% -0.9722% -0.4135%] (p = 0.00 < 0.05)
                        Change within noise threshold.
Found 2 outliers among 100 measurements (2.00%)
  1 (1.00%) low mild
  1 (1.00%) high mild

rustc_hex::from_hex     time:   [66.218 µs 66.473 µs 66.750 µs]
                        change: [-0.0431% +0.6585% +1.4552%] (p = 0.08 > 0.05)
                        No change in performance detected.
Found 9 outliers among 100 measurements (9.00%)
  1 (1.00%) low severe
  2 (2.00%) low mild
  4 (4.00%) high mild
  2 (2.00%) high severe

faster_hex::hex_decode  time:   [16.136 µs 16.211 µs 16.324 µs]
                        change: [-2.4694% -1.9531% -1.4089%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 7 outliers among 100 measurements (7.00%)
  2 (2.00%) low mild
  2 (2.00%) high mild
  3 (3.00%) high severe

faster_hex::hex_decode_unchecked
                        time:   [6.7977 µs 6.8215 µs 6.8475 µs]
                        change: [-1.4235% -0.5587% +0.2182%] (p = 0.20 > 0.05)
                        No change in performance detected.
Found 5 outliers among 100 measurements (5.00%)
  1 (1.00%) low mild
  3 (3.00%) high mild
  1 (1.00%) high severe

faster_hex::hex_decode_fallback
                        time:   [6.7799 µs 6.8003 µs 6.8209 µs]
                        change: [-1.9470% -1.3817% -0.8203%] (p = 0.00 < 0.05)
                        Change within noise threshold.
Found 4 outliers among 100 measurements (4.00%)
  4 (4.00%) high mild

License

Licensed under either of Apache-2.0 or GPL-3.0 at your option.