5 个不稳定版本
0.3.0 | 2024年3月17日 |
---|---|
0.2.0 | 2023年11月30日 |
0.1.5 | 2023年11月30日 |
#4 in #prefixed
26 每月下载量
15KB
305 行
pillid
Rust 中随机、短、抗碰撞的ID。
lib.rs
:
一个小巧、安全、URL友好的、可选带前缀、可选带时间戳的唯一字符串ID生成器
安全。它使用加密强随机API,并保证符号的正确分布。
紧凑。它使用比UUID更大的字母表(A-Za-z0-9
),在22个符号中就有更多的唯一ID,而不是36个。
[dependencies]
pillid = "0.4.0"
use pillid::pillid;
fn main() {
let id = pillid!(); //=> "cNbQxzR55W2RbkPoERACA"
}
用法
简单
主模块使用URL友好的符号(A-Za-z0-9
)并返回一个22个字符的ID(相当于128位随机数)。
use pillid::pillid;
fn main() {
let id = pillid!(); //=> "cNbQxzR55W2RbkPoERACA"
}
自定义长度
如果您想缩短ID长度(并增加碰撞概率),可以将长度作为参数传递给生成函数
use pillid::pillid;
fn main() {
let id = pillid!(10); //=> "QhpvygNybI"
}
自定义字母表或长度
如果您想更改ID的字母表或长度,可以使用低级 custom
模块。
use pillid::pillid;
fn main() {
let alphabet: [char; 16] = [
'1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'a', 'b', 'c', 'd', 'e', 'f'
];
let id = pillid!(10, &alphabet); //=> "f42ega7402"
}
字母表必须包含256个符号或更少。否则,生成器将不安全。
自定义随机字节生成器
您可以使用 complex
模块替换默认的安全随机生成器。例如,要使用基于种子的生成器。
use pillid::pillid;
fn random_byte () -> u8 {
0
}
fn main() {
fn random (size: usize) -> Vec<u8> {
let mut bytes: Vec<u8> = vec![0; size];
for i in 0..size {
bytes[i] = random_byte();
}
bytes
}
pillid!(10, &['a', 'b', 'c', 'd', 'e', 'f'], random); //=> "fbaefaadeb"
}
random
函数必须接受数组大小并返回一个包含随机数的向量。
如果您想使用与 format
相同的URL友好的符号,可以从 url
模块获取默认的字母表
use pillid::pillid;
fn random (size: usize) -> Vec<u8> {
let result: Vec<u8> = vec![0; size];
result
}
fn main() {
pillid!(10, &pillid::alphabet::DEFAULT, random); //=> "93celLtuub"
}
依赖关系
~245–345KB