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

bin+lib oysterpack_uid

OysterPack UID is used to generate unique identifiers

3 unstable releases

Uses old Rust 2015

0.2.0 Nov 4, 2018
0.1.1 Oct 18, 2018
0.1.0 Oct 18, 2018

#3 in #oyster-pack

24 downloads per month
Used in oysterpack

MIT/Apache

32KB
619 lines

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{}
TypedULID
TypedULID
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.

Dependencies

~2–3MB
~52K SLoC