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

optional dependencies

itertools uuid?

Enables itertools ^0.10.3

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