3个不稳定版本
0.3.0 | 2019年9月2日 |
---|---|
0.2.1 | 2019年8月29日 |
0.2.0 | 2019年8月28日 |
0.1.0 |
|
#22 in #guid
87 每月下载次数
14KB
181 代码行,不含注释
fastuuid
库 fastuuid
是由Go语言编写的 https://github.com/rogpeppe/fastuuid 的氧化版本。它提供快速生成可猜测和唯一的192位通用唯一标识符,并支持简单的128位RFC-4122 V4 UUID。生成的UUID不是不可猜测的,因为每个生成的UUID都与之前生成的UUID相邻。
它避免在每次生成UUID时从rand读取192位,并提供了一个API来获取128位字符串引用,可以选择是否分配新的堆字符串对象,同时提供相同函数的安全和不安全版本。
包含基准测试。在我的机器上,生成192位UUID需要大约7纳秒,而生成128位字符串(不分配额外堆内存,不安全版本)分别需要小于20纳秒和大约95纳秒。安全版本需要额外的约10纳秒。
用法
fastuuid-rs
可以通过以下方式依赖
[dependencies]
fastuuid = "0.3.0"
示例
192位UUID
use fastuuid::Generator;
fn main() {
let generator = Generator::new();
let uuid:[u8;24] = generator.next();
}
128位UUID
- 带新的字符串分配
use fastuuid::Generator;
fn main() {
let generator = Generator::new();
let uuid = generator.hex128_as_string().unwrap();
}
- 不带新的字符串分配
use fastuuid::Generator;
fn main() {
let generator = Generator::new();
let mut buffer: [u8; 36] = [0; 36];
let uuid = generator.hex128_as_str(&mut buffer).unwrap();
}
注意:这两个函数还有一个不安全版本,它使用不安全的UTF8到字符串的转换,使它们稍微快一点。可以并发使用所有这些。
依赖项
~645KB
~12K SLoC