#zero-copy #codec #decoding #encode #data #proquint

无std proqnt

零拷贝proquint编码和解码

1 个不稳定版本

0.1.0 2023年5月7日

#2075编码

0BSD OR MIT OR Apache-2.0

96KB
2K SLoC

proqnt

Version Documentation Build License Downloads

一个可发音的强五元组,或称 proquint,是一个可发音的5个字母的字符串,用于编码唯一的16位整数。

Proquints可以用来以更人性化的方式编码二进制数据,如IP地址、公钥和UUID。更多信息,请查看规范

基本用法

# use std::net::Ipv4Addr;
use proqnt::{FromProquints, IntoProquints, Proquint};
assert_eq!(
    format!("{}", Ipv4Addr::new(127, 0, 0, 1).proquint_encode()),
    "lusab-babad"
);
assert!(
    Ipv4Addr::new(127, 0, 0, 1).proquint_digits().eq([
        u16::parse_proquints("lusab").unwrap(),
        u16::parse_proquints("babad").unwrap()
    ].into_iter())
);
assert_eq!(
    format!("{}", [127u8, 0, 0, 1].proquint_encode()),
    "lusab-babad"
);
assert!(
    Ipv4Addr::new(127, 0, 0, 1).proquint_encode().into_iter().eq([
        "lusab".parse::<Proquint>().unwrap(),
        "babad".parse::<Proquint>().unwrap()
    ].into_iter())
);
// NOTE: [127, 0, 0, 1] will yield an array of i32, which will give the wrong result!

依赖关系

~66KB