Crates.io | faster-hex |
lib.rs | faster-hex |
version | 0.10.0 |
source | src |
created_at | 2018-10-30 07:29:48.231363 |
updated_at | 2024-09-14 06:29:11.794302 |
description | Fast hex encoding. |
homepage | https://github.com/NervosFoundation/faster-hex |
repository | https://github.com/NervosFoundation/faster-hex |
max_upload_size | |
id | 93538 |
size | 63,893 |
This program implements hex encoding a slice into a predetermined destination using various different instruction sets.
Runs benchmark
cargo bench
Machine: MacBook Pro (Early 2015) (2.7 GHz Intel Core i5)
Rust: rustc 1.31.0 (abe02cefd 2018-12-04)
Compare with hex:
Compare with rustc-hex:
Encode to hex
use faster_hex::hex_string;
let result = hex_string(b"Hello world!");
assert_eq!(result, "48656c6c6f20776f726c6421");
Encode to upper case hex
use faster_hex::hex_string_upper;
let result = hex_string_upper(b"Hello world!");
assert_eq!(result, "48656C6C6F20776F726C6421");
Decode
use faster_hex::hex_decode;
let src = b"48656c6c6f20776f726c6421";
let mut dst = vec![0; src.len() / 2];
hex_decode(src, &mut dst).unwrap();
assert_eq!(dst, b"Hello world!");
Decode with case check
use faster_hex::{hex_decode_with_case, CheckCase};
let src = b"48656c6c6f20776f726c6421";
let mut dst = vec![0; src.len() / 2];
assert!(hex_decode_with_case(src, &mut dst, CheckCase::Lower).is_ok());
assert_eq!(dst, b"Hello world!");
assert!(hex_decode_with_case(src, &mut dst, CheckCase::None).is_ok());
assert_eq!(dst, b"Hello world!");
assert!(hex_decode_with_case(src, &mut dst, CheckCase::Upper).is_err());
Serde feature
use serde::{Deserialize, Serialize};
#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)]
struct Simple {
#[serde(with = "faster_hex")]
foo: Vec<u8>,
#[serde(with = "faster_hex::nopfx_lowercase")]
bar: Vec<u8>,
}
Major version zero (0.y.z) is for initial development. Anything MAY change at any time. The public API SHOULD NOT be considered stable.
MINOR version when make incompatible API changes before 1.0.0.
This project is licensed under the MIT license.
This product includes copies and modifications of software developed by third parties:
See the source code files for more details.
Copies of third party licenses can be found in LICENSE-THIRD-PARTY.