7 个不稳定版本
0.4.0 | 2021年4月7日 |
---|---|
0.3.0 | 2020年2月8日 |
0.2.0 | 2018年1月7日 |
0.1.3 | 2018年1月6日 |
0.1.0 | 2017年12月26日 |
#258 in Web 编程
249,555 monthly downloads
用于 285 个 Crates (144 直接)
14KB
132 行
Nano ID
A tiny, secure, URL-friendly, unique string ID generator for Rust
use nanoid::nanoid;
fn main() {
let id = nanoid!(); //=> "Yo1Tr9F3iF-LFHX9i9GvA"
}
安全。 它使用密码学强随机 API 并保证符号的适当分布。
紧凑。 它使用比 UUID 更大的字母表 (A-Za-z0-9_-
),并且只需 21 个符号而不是 36 个符号就有相同数量的唯一 ID。
使用方法
安装
[dependencies]
nanoid = "0.4.0"
简单
主模块使用 URL 友好符号 (A-Za-z0-9_-
) 并返回一个 21 个字符的 ID。
use nanoid::nanoid;
fn main() {
let id = nanoid!(); //=> "Yo1Tr9F3iF-LFHX9i9GvA"
}
符号 -,.()
不会在 URL 中编码。如果用于链接的末尾,它们可能会被识别为标点符号。
自定义长度
如果您想缩短 ID 长度(并增加碰撞概率),可以将长度作为参数传递给生成函数
use nanoid::nanoid;
fn main() {
let id = nanoid!(10); //=> "IRFa-VaY2b"
}
自定义字母表或长度
如果您想更改 ID 的字母表或长度,可以将自定义字母表作为第二个参数传递给 nanoid!()
宏
use nanoid::nanoid;
fn main() {
let alphabet: [char; 16] = [
'1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'a', 'b', 'c', 'd', 'e', 'f'
];
let id = nanoid!(10, &alphabet); //=> "4f90d13a42"
}
字母表必须包含 256 个符号或更少。否则,生成器将不安全。
自定义随机字节生成器
您可以使用 complex
模块替换默认的安全随机生成器。例如,要使用基于种子的生成器。
use nanoid::nanoid;
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
}
nanoid!(10, &['a', 'b', 'c', 'd', 'e', 'f'], random); //=> "fbaefaadeb"
}
random
函数必须接受数组大小并返回一个随机数字的向量。
如果您想使用与 format
相同的 URL 友好符号,可以从 url
模块获取默认字母表
use nanoid::nanoid;
fn random (size: usize) -> Vec<u8> {
let result: Vec<u8> = vec![0; size];
result
}
fn main() {
nanoid!(10, &nanoid::alphabet::SAFE, random); //=> "93ce_Ltuub"
}
其他编程语言
依赖
~310KB