#时间戳 #id #base32 #可排序 #ulid

lexicoid

基于时间戳的简短且稳定的ID

1个不稳定版本

0.1.0 2023年1月21日

#1651 in 编码

MIT 许可证

9KB
83

Lexicoid

Build Status Crates.io docs.rs

基于时间戳的简短且稳定的ID。

深受基于时间戳的简短、友好的base32缩略词启发,作者为@brandur

安装

使用cargo更新你的Cargo.toml来安装

[dependencies]
lexicoid = "*"

或者使用cargo-add你可以运行

cargo add lexicoid

用法

use lexicoid::*;

// generates a lexicoid for the current timestamp
println!("{}", lexicoid_now()); // gj7x3vc

// generates a lexicoid for a given unix timestamp (as u64)
println!("{}", lexicoid(1654401676)); // gei4p52

用例

当你需要基于生成时间戳进行字典排序的简单且简短的ID时。

示例

  • @brandur,这个crate的启发者,用它来生成他网站上简短条目的ID。
  • 你想要在一个文件夹中混淆文件名,并用仍然保持字典排序的字符串(基于文件创建或修改时间)替换它们。
  • 你需要在文件名前加上一个唯一的ID,同时保持它们按创建顺序排序(例如,用于管理你的博客文章、迁移文件或其他类型的文件,这些文件你最终会缓慢地创建)。

警告:由于时间戳的分辨率是每秒,如果你在同一秒内尝试生成多个ID,它们都将相同。这并不直接适用于高频率ID生成。但是,如果你需要将此方法适应高频率ID生成,你总是可以在生成的ID后附加当前的毫秒数(或纳秒数)。

贡献

每个人都非常欢迎为此项目做出贡献。你可以通过在GitHub上打开一个问题来提交错误或提出改进建议。

许可证

MIT许可证下许可。© Luciano Mammino。

依赖

~590KB
~11K SLoC