Generate 128 bits id structs easily
toml
[dependencies]
identifier = "0.1"
Version requirement: rustc 1.31+
Go to the generator section to see how to create one
```rust use generators::uuid; use identifier::{Display, FromStr, Identifier};
pub struct UserId(u128);
fn main() { let id = UserId::generate(); println!("generated user id: {}", id);
let parsed_id = "5ed9a942-223e-4639-a97c-6b6c41ac48d3".parse::<UserId>();
assert!(parsed_id.is_ok());
} ```
```rust use generators::random_id; use identifier::{Display, FromStr, Identifier};
const KIND: u32 = 0x1111_ffff;
pub struct PostId(u128);
fn main() { let id = PostId::generate(); println!("generated post id: {}", id); } ```
No params (with the uuid crate)
```rust mod uuid { use uuid::Uuid;
pub fn generate() -> u128 {
Uuid::new_v4().as_u128()
}
pub fn validate(value: u128) -> bool {
if let Some(Version::Random) = Uuid::from_u128(value).get_version() {
true
} else {
false
}
}
} ```
With params
```rust mod random_id { pub fn generate(kind: u32, seed: u16) -> u128 { /* generate a random id with the given params ... */ }
pub fn validate(value: u128, kind: u32, _: u16) -> bool {
/* check it's a correct random id ... */
}
} ```
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.