6个版本
0.1.5 | 2022年7月25日 |
---|---|
0.1.4 | 2022年5月31日 |
0.1.3 | 2020年5月18日 |
在 值格式化 中排名第74
每月下载量 1,199
在 35 个 Crates中使用 (直接使用 9 个)
17KB
138 行
Crate unique_id
唯一ID生成器的特性和实现。
此Crate提供了四个简单的特性和开始于 Generator
的实现。这将返回连续的唯一标识符,唯一标识符的唯一要求是实现 PartialEq
。
每个实现的自定义生成器都在其自己的功能中,默认情况下所有功能都包含在内。
- 在
random
功能中提供的生成器RandomGenerator
,提供一个随机数方案返回u128
值。依赖于 uuid Crate。 - 在
sequence
功能中提供的生成器SequenceGenerator
,以线程安全的方式提供单调递增的 u64 值。依赖于 atomic_refcell 和 lazy_static Crates。 - 在
string
功能中提供的生成器StringGenerator
,提供随机字符串值。依赖于 blob-uuid Crate。
示例
以下是一个 StringGenerator
实现的示例。
use unique_id::Generator;
use unique_id::string::StringGenerator;
let gen = StringGenerator::default();
let mut last = gen.next_id();
for _ in 1..100_000 {
let next = gen.next_id();
assert_ne!(last, next);
last = next;
}
基准测试
cargo bench
命令将运行比较基准以显示所有生成器的相对性能。此基准在 benches/compare.cs
中,并使用 Criterion 生成报告。
$ cargo bench
Finished bench [optimized] target(s) in 17.16s
Running target/release/deps/unique_id-4944964a39587480
running 3 tests
test random::tests::test_something ... ignored
test sequence::tests::test_something ... ignored
test string::tests::test_something ... ignored
test result: ok. 0 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out
Running target/release/deps/compare-cfeb3571caa9de30
Compare Implementations/string
time: [928.16 ns 1.0963 us 1.2829 us]
change: [+108.47% +224.51% +419.70%] (p = 0.00 < 0.05)
Performance has regressed.
Found 3 outliers among 100 measurements (3.00%)
1 (1.00%) high mild
2 (2.00%) high severe
Compare Implementations/integer
time: [21.033 ns 21.434 ns 21.885 ns]
change: [-4.1097% +0.4756% +5.4467%] (p = 0.84 > 0.05)
No change in performance detected.
Found 4 outliers among 100 measurements (4.00%)
2 (2.00%) high mild
2 (2.00%) high severe
Compare Implementations/random
time: [36.741 ns 38.285 ns 40.487 ns]
change: [-33.414% -24.047% -13.624%] (p = 0.00 < 0.05)
Performance has improved.
Found 7 outliers among 100 measurements (7.00%)
2 (2.00%) high mild
5 (5.00%) high severe
输出可以在 target/criterion/report/index.html
中找到。
变更
版本 0.1.5
SequenceGenerator
的简化实现。- 移除了
atomic_refcell
依赖。
版本 0.1.4
- 通过 dependabot 更新了
uuid
和blob-uuid
的依赖。 - 在生成器结构中移除了
PhantomData
。
版本 0.1.3
- 将特定模块的单元测试移动到了合并的
tests/unique.rs
。 - 在基准测试中将
integer
重命名为sequence
。 - 增加了更多文档内容。
版本 0.1.2
- 添加了新的
RandomGenerator
实现。 - 将每个实现放入其自身的功能中。
- 将
#[inline]
添加到一些函数中。
版本 0.1.1
- 添加了特性
GeneratorFromSeed
和SequenceGenerator
的实现。 - 添加了一个基准测试来比较两种当前实现。
版本 0.1.0
- 简单的特性
Generator
、GeneratorWithInvalid
和GeneratorFromStr
。 StringGenerator
使用 UUIDSequenceGenerator
使用i64
依赖项
~96KB