Crate oysterpack_uid[][src]

Provides support for universally unique identifiers that confirm to the ULID spec.

You can generate ULIDs as String or u128. You can convert ULIDs between String and u128.

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);

You can define type safe ULID based unique identifiers (Uid):

Uid for structs

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

Uid for traits

use oysterpack_uid::Uid;
trait Foo{}
// Send + Sync are added to the type def in order to satisfy Uid type constraints for thread safety,
// i.e., in order to be able to send the Uid across threads.
type FooId = Uid<dyn Foo + Send + Sync>;
let id = FooId::new();

By default, Uid is serializable via serde. If serialization is not needed then you can opt out by including the dependency with default features disabled : default-features = false.

Re-exports

pub use uid::Uid;
pub use uid::ulid;
pub use uid::ulid_str_into_u128;
pub use uid::ulid_u128;
pub use uid::ulid_u128_into_string;

Modules

uid

Provides a typesafe ULID