#[inline]
fn hexchar(b: u8) -> [u8; 2] {
let a = b >> 4;
let b = b & 0xf;
[
if a < 10 { a + 0x30 } else { (a - 10) + 0x61 },
if b < 10 { b + 0x30 } else { (b - 10) + 0x61 },
]
}
pub fn hexlify(slice: &[u8]) -> String {
let mut buffer = vec![0u8; slice.len() * 2];
for byte in 0..slice.len() {
let [a, b] = hexchar(slice[byte]);
buffer[byte * 2] = a;
buffer[byte * 2 + 1] = b;
}
unsafe { String::from_utf8_unchecked(buffer) }
}