2 unstable releases

0.2.0 Dec 10, 2022
0.1.0 Dec 10, 2022

#1340 in Rust patterns

31 downloads per month


116 lines

Simple Labeled IDs

Simple IDs with associated type labels.

use slid::Id;

struct User;
let player_a = Id::<User>::new_random();
let player_b = Id::<User>::new_random();

// For all practical purposes, we can assume that 2 random IDs will be unique and different
assert_ne!(player_a, player_b);

// The label generic helps avoid mixups:
struct Product;
fn delete_product(id: Id<Product>) {}

// Doesn't compile, because Id<User> and Id<Player> are different
// delete_product(player_a);

// But you can explicitly cast the label if needed:


Note: this library does not attempt conform to any UUID standards. Random IDs are plain simple random. If you want the standardized UUIDs, check out uuid


~32K SLoC