use tagid::{
Entity, Id, Label, MakeLabeling, Sourced,
id::{Generated, strategies},
};
#[allow(dead_code)]
struct User;
impl Label for User {
type Labeler = MakeLabeling<Self>;
fn labeler() -> Self::Labeler {
MakeLabeling::default()
}
}
#[cfg(feature = "uuid")]
impl Entity for User {
type IdGen = tagid::UuidGenerator;
}
#[cfg(feature = "uuid")]
type UserId = Id<Sourced<User, Generated<strategies::UuidV7>>, ::uuid::Uuid>;
fn main() {
#[cfg(feature = "uuid")]
{
let user_id = UserId::new();
println!("Canonical ID: {}", user_id);
println!("Labeled (default): {}", user_id.labeled());
println!(
"Labeled (full): {}",
user_id.labeled().mode(tagid::LabelMode::Full)
);
}
#[cfg(not(feature = "uuid"))]
println!("This example requires the 'uuid' feature.");
}