7 个版本 (重大变更)
0.7.0 | 2024年5月17日 |
---|---|
0.6.0 | 2023年8月20日 |
0.5.0 | 2023年6月24日 |
0.4.0 | 2023年6月24日 |
0.1.0 | 2023年4月7日 |
#386 in 数据结构
用于 yeet-yoink
30KB
466 行
ShortGuid
简短的URL安全Base64编码的UUID。
ShortGuids 透明地表示UUID类型,但它们的字符串表示中只使用22个字符,而带破折号的UUID有36个字符,不带破折号的UUID有32个字符。
#[test]
fn it_works() {
let uuid = Uuid::try_parse("c9a646d3-9c61-4cb7-bfcd-ee2522c8f633").unwrap();
let from_uuid = ShortGuid::from(uuid);
let parsed_uuid = ShortGuid::try_parse("c9a646d3-9c61-4cb7-bfcd-ee2522c8f633").unwrap();
let parsed_short = ShortGuid::try_parse("yaZG05xhTLe_ze4lIsj2Mw").unwrap();
assert_eq!(from_uuid, uuid);
assert_eq!(from_uuid, "yaZG05xhTLe_ze4lIsj2Mw");
assert_eq!(from_uuid, "c9a646d3-9c61-4cb7-bfcd-ee2522c8f633");
assert_eq!(from_uuid, parsed_uuid);
assert_eq!(from_uuid, parsed_short);
let random = ShortGuid::new_random();
assert_ne!(from_uuid, random);
}
模糊测试
这使用 cargo-fuzz
。请参阅 fuzz/fuzzers
以获取可用的模糊测试脚本。要运行,使用以下调用之一
cargo +nightly fuzz run roundtrip
cargo +nightly fuzz run decode_random
cargo +nightly fuzz run encode_random
cargo +nightly fuzz run equals
依赖项
~0.4–1.2MB
~20K SLoC