7次发布
0.1.6 | 2024年6月8日 |
---|---|
0.1.5 | 2024年6月8日 |
0.1.4 | 2024年5月19日 |
722 在 算法 中
每月下载 51 次
20KB
260 行
cuid2-timeless
一个不稳定、几乎未经测试、可能给出错误输出并且可能随时崩溃的CUID2实现。为学习Rust而构建,我不知道如何测试它。
[!警告] 这个库比cuid-rust慢得多!
基准测试 cuid2-timeless cuid2 (cuid-rust) 单个cuid生成 53.180 µs 2.8162 µs 10,000个cuid生成 553.52 ms 28.900 ms 这个库仅用于学习目的。请勿在生产环境中使用此库!请改用cuid-rust!
安装
cargo add cuid2_timeless --features sha3
(或者如果你想用sha2,也可以)
使用
要么使用cuid2_timeless::cuid_wrapper()
并再次调用它以获取ID,要么通过cuid2_timeless::Cuid
获取一些定制
use cuid2_timeless;
let mut cuid = cuid2_timeless::cuid_wrapper();
println!("{}", cuid().unwrap());
或一些定制
use cuid2_timeless;
use rand::{self, Rng};
let mut cuid = cuid2_timeless::Cuid::new(
Box::new( // A randomizer function
|| {
rand::thread_rng().gen()
}
),
Box::new( // Your very own counter function
|mut i| {
Box::new(move || {
i += 1;
i
})
}
),
24, // Length
Box::new(cuid2_timeless::utils::create_fingerprint) // And a fingerprint creator function (im too lazy to implement)
);
cuid.generate(None).unwrap();
或验证它实际上是否是CUID
use cuid2_timeless;
println!("{}", cuid2_timeless::is_cuid("f9ovgvsnly7h6khwt4nx08kom".to_string(), None, None));
功能
regex
是用于在模块中添加或删除regex
crate的功能。关闭此功能将删除is_cuid
函数(默认启用)random
是用于在模块中添加或删除rand
crate的功能。关闭此功能将删除Default
特质从Cuid
(默认启用)sha2
是一个功能,用于在模块中添加或删除sha2
crate。关闭此功能将删除 SHA2 哈希算法,但开启此功能将使用sha2
进行哈希(如果存在sha3
则无法启用,如果同时启用了sha2
和sha3
,则编译会出错,默认不启用)sha3
是一个功能,用于在模块中添加或删除sha3
crate。关闭此功能将删除 SHA3 哈希算法,但开启此功能将使用sha3
进行哈希(如果存在sha2
则无法启用,如果同时启用了sha2
和sha3
,则编译会出错,默认启用)
依赖项
~4-13MB
~84K SLoC