| Crates.io | euui |
| lib.rs | euui |
| version | 1.3.0 |
| created_at | 2024-07-20 11:28:00.674692+00 |
| updated_at | 2025-06-09 18:03:55.880779+00 |
| description | An Extended Universal Unique Identifier |
| homepage | |
| repository | https://github.com/Trehinos/euui |
| max_upload_size | |
| id | 1309386 |
| size | 37,911 |
Euui is a Rust library (no_std compatible) that provides a 512-bit (64 bytes) unique identifier, which is 4 times
larger than traditional UUIDs or GUIDs. This allows for enhanced uniqueness and adaptability in scenarios where more
significant identifiers are required.
The Euui type can be utilized for various applications, offering readable formats and flexible access to its
components (Uuid, u128, u64, u8), for unique identification in embedded or resource-constrained environments.
Size: A single Euui consists of 512 bits (64 bytes), making it exceptionally unique.
Formatting:
-) and line breaks (\n).Components Access:
u128, 8×u64, 64×u8 or 4xUuid (with the feature uuid).Generation:
Euui using default().Euui using random().Here are examples of how to use the Euui library:
use euui::Euui;
fn test() {
// Generate a zero-initialized Euui
let zero_euui = Euui::default();
println!("Zero Euui: {}", zero_euui);
// Generate a random Euui
let random_euui = Euui::random();
println!("Random Euui: {}", random_euui);
// Format the Euui into a readable structure
println!("Formatted Euui:\n{}", random_euui.format());
}
You can retrieve specific components (u128, u64, or u8) of the Euui as needed:
// Access one of the u128 components
fn test() {
if let Some(first_u128) = random_euui.u128(0) {
println!("First u128: {:032x}", first_u128);
}
// Access one of the u64 components
if let Some(second_u64) = random_euui.u64(1) {
println!("Second u64: {:016x}", second_u64);
}
// Access one of the u8 components
if let Some(last_u8) = random_euui.u8(63) {
println!("Last u8: {:02x}", last_u8);
}
}
You can initialize an Euui using custom GUIDs or bytes:
u128 array)pub fn test() {
let guids = [
0x1234567890abcdef1234567890abcdef,
0xabcdef1234567890abcdef1234567890,
0x7890abcdef1234567890abcdef123456,
0x567890abcdef1234567890abcdef1234,
];
let euui = Euui::from_be_guids(guids);
}
u8 array)pub fn test() {
let bytes = [0x12, 0x34, /* 61 other bytes... */ 0xef];
let euui = Euui::from_be_bytes(bytes);
}
The main functionalities of the Euui type are:
Euui::zero() -> EuuiEuui::default() -> EuuiEuui::from_be_guids([u128; 4]) -> EuuiEuui::from_be_longs([u64; 8]) -> EuuiEuui::from_be_bytes([u8; 64]) -> Euuiu128(index: usize) -> Option<u128>u64(index: usize) -> Option<u64>u8(index: usize) -> Option<u8>to_be_bytes() -> [u8; 64] Euuito_be_longs() -> [u64; 8] Euuito_be_guids() -> [u128; 4] Euuito_string()Euui to a single hexadecimal string representation.format() -> StringEuui into a structured string, following the pattern:#1-#2
#3-#4
randomEuui::random() -> EuuiEuui::random_from_first(u128)random_from_second, random_from_third, random_from_fourth)Euui::regenerate_first(&self)regenerate_second, regenerate_third, regenerate_fourth).uuidEuui::with_uuid_part(Uuid, usize)with_first(Uuid), with_second, with_third, with_fourth).Euui::from_uuids([Uuid; 4])uuid(index: usize) -> Option<Uuid>random_uuidEuui::random_uuids() (Uuid:v4)Read the complete API documentation here.
With 512 bits of entropy, Euui can be useful for applications where traditional 128-bit UUIDs are insufficient:
© 2024-2025 Sébastien GELDREICH
This project is licensed under the MIT License. See LICENSE for more details.