Crate type_safe_id
source ·Expand description
A type-safe, K-sortable, globally unique identifier
use type_safe_id::{StaticType, TypeSafeId};
#[derive(Default)]
struct User;
impl StaticType for User {
// must be lowercase ascii [a-z] only
const TYPE: &'static str = "user";
}
// type alias for your custom typed id
type UserId = TypeSafeId<User>;
let user_id1 = UserId::new();
let user_id2 = UserId::new();
let uid1 = user_id1.to_string();
let uid2 = user_id2.to_string();
dbg!(&uid1, &uid2);
assert!(uid2 > uid1, "type safe IDs are ordered");
let user_id3: UserId = uid1.parse().expect("invalid user id");
let user_id4: UserId = uid2.parse().expect("invalid user id");
assert_eq!(user_id1.uuid(), user_id3.uuid(), "round trip works");
assert_eq!(user_id2.uuid(), user_id4.uuid(), "round trip works");
Structs§
- A dynamic type prefix
- A typed UUID.
Enums§
Traits§
- A static type prefix
- Represents a type that can serialize to and be parsed from a tag