6个版本

0.1.5 2022年7月25日
0.1.4 2022年5月31日
0.1.3 2020年5月18日

值格式化 中排名第74

Download history 326/week @ 2024-03-13 669/week @ 2024-03-20 494/week @ 2024-03-27 604/week @ 2024-04-03 564/week @ 2024-04-10 485/week @ 2024-04-17 349/week @ 2024-04-24 414/week @ 2024-05-01 358/week @ 2024-05-08 328/week @ 2024-05-15 315/week @ 2024-05-22 326/week @ 2024-05-29 353/week @ 2024-06-05 209/week @ 2024-06-12 294/week @ 2024-06-19 314/week @ 2024-06-26

每月下载量 1,199
35 Crates中使用 (直接使用 9 个)

自定义许可

17KB
138

Crate unique_id

唯一ID生成器的特性和实现。

MIT License Minimum Rust Version crates.io docs.rs Build Audit GitHub stars

此Crate提供了四个简单的特性和开始于 Generator 的实现。这将返回连续的唯一标识符,唯一标识符的唯一要求是实现 PartialEq

每个实现的自定义生成器都在其自己的功能中,默认情况下所有功能都包含在内。

示例

以下是一个 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 更新了 uuidblob-uuid 的依赖。
  • 在生成器结构中移除了 PhantomData

版本 0.1.3

  • 将特定模块的单元测试移动到了合并的 tests/unique.rs
  • 在基准测试中将 integer 重命名为 sequence
  • 增加了更多文档内容。

版本 0.1.2

  • 添加了新的 RandomGenerator 实现。
  • 将每个实现放入其自身的功能中。
  • #[inline] 添加到一些函数中。

版本 0.1.1

  • 添加了特性 GeneratorFromSeedSequenceGenerator 的实现。
  • 添加了一个基准测试来比较两种当前实现。

版本 0.1.0

  • 简单的特性 GeneratorGeneratorWithInvalidGeneratorFromStr
  • StringGenerator 使用 UUID
  • SequenceGenerator 使用 i64

依赖项

~96KB