#ulid #uid #oyster-pack #generate #unique-identifier #u128 #string

bin+lib oysterpack_uid

OysterPack UID 用于生成唯一标识符

3 个不稳定版本

使用旧的 Rust 2015

0.2.0 2018年11月4日
0.1.1 2018年10月18日
0.1.0 2018年10月18日

#3 in #oyster-pack

每月24次下载
用于 oysterpack

MIT/Apache

32KB
619

提供对符合 ULID 规范 的通用唯一标识符的支持。

您可以将 ULID 生成为 String 或 u128。您可以在 String 和 u128 之间转换 ULID。

use oysterpack_uid::{
    ulid,
    ulid_u128,
    ulid_u128_into_string,
    ulid_str_into_u128
};

// generates a new ULID as a string
let id_str = ulid();
// generates a new ULID as u128
let id_u128 = ulid_u128();

// conversions between string and u128 ULIDs
let ulid_str = ulid_u128_into_string(id_u128);
assert_eq!(ulid_str_into_u128(&ulid_str).unwrap(), id_u128);

您可以定义类型安全的基于 ULID 的唯一标识符 (Uid)

结构体的 Uid

use oysterpack_uid::Uid;
struct User;
type UserId = Uid<User>;
let id = UserId::new();

特性的 Uid

use oysterpack_uid::Uid;
trait Foo{}
TypedULID
TypedULID
type FooId = Uid<dyn Foo + Send + Sync>;
let id = FooId::new();

默认情况下,Uid 可以通过 serde 进行序列化。如果不需要序列化,则可以通过包括禁用默认功能的依赖项来选择退出: default-features = false

依赖项

~2–3MB
~52K SLoC