Cargo Features

[dependencies]
fastsend = { version = "1.2.3", default-features = false, features = ["pause_on_start", "ticket", "uuid", "auto_increment", "random62"] }
default = pause_on_start

默认会开启 pause_on_start 特性,以期在极大程度上保证生成 ID 或序列号的唯一性(但也只是极大程度上)。

pause_on_start default

"pause_on_start" 目前应用于两个场合:

  1. BlockFrame::new 方法,由于 BlockFrame 通常用作全局变量,因此将 pause_on_start 置于 构建方法中,用于在程序启动时暂停至下一个时间节点(秒);
  2. TimeSerialer 的全局 slot,在 lazy_static 中初始化时,使用 Curosr::next 完成时间停顿, 以到达下一个时间节点(秒)。

以上两处 pause 的目的都在于抵达下一个时间节点,避免与已生成的 ID 或序列号重复。 如果使用 '--no-default-features' 参数去除 pause_on_start,则需要使用者自己完成对生成 ID 或序列号 的唯一性校验,一般只在构建命令行(cli)应用时会去掉 pause_on_start 特性。

ticket = thiserror

Affects serial::ticket

uuid = itertools, md5, rand_chacha, sha-1

Affects serial::uuid

auto_increment

Affects serial::auto_increment

random62 = rand_chacha

Affects serial::random62

Features from optional dependencies

In crates that don't use the dep: syntax, optional dependencies automatically become Cargo features. These features may have been created by mistake, and this functionality may be removed in the future.

thiserror ticket?

Enables thiserror ^1.0.30

optional dependencies

itertools uuid?

Enables itertools ^0.10.3

md5 uuid?
sha-1 uuid?
rand_chacha random62? uuid?