Expand description
Library providing a GUID (Globally Unique Identifier) type. The format is described in Appendix A of the UEFI Specification. This format of GUID is also used in Microsoft Windows.
Two versions of the GUID struct are provided that are identical
except for the struct alignment. Guid
is 1-byte aligned, and
AlignedGuid
is 8-byte aligned. These types can be conveniently
constructed with the guid!
and aligned_guid!
macros.
Features
No features are enabled by default.
bytemuck
: Implements bytemuck’sPod
andZeroable
traits forGuid
.serde
: Implements serde’sSerialize
andDeserialize
traits forGuid
.std
: Providesstd::error::Error
implementation for the error type.
Examples
Construct a GUID at compile time with the guid!
macro:
use uguid::guid;
let guid = guid!("01234567-89ab-cdef-0123-456789abcdef");
Parse a GUID at runtime from a string:
use uguid::Guid;
let guid: Guid = "01234567-89ab-cdef-0123-456789abcdef".parse().unwrap();
Construct a GUID from its components or a byte array:
use uguid::Guid;
let guid1 = Guid::new(
0x01234567_u32.to_le_bytes(),
0x89ab_u16.to_le_bytes(),
0xcdef_u16.to_le_bytes(),
0x01,
0x23,
[0x45, 0x67, 0x89, 0xab, 0xcd, 0xef],
);
let guid2 = Guid::from_bytes([
0x67, 0x45, 0x23, 0x01, 0xab, 0x89, 0xef, 0xcd, 0x01, 0x23, 0x45, 0x67,
0x89, 0xab, 0xcd, 0xef,
]);
assert_eq!(guid1, guid2);
Convert to a string or a byte array:
use uguid::guid;
let guid = guid!("01234567-89ab-cdef-0123-456789abcdef");
assert_eq!(guid.to_string(), "01234567-89ab-cdef-0123-456789abcdef");
assert_eq!(
guid.to_bytes(),
[
0x67, 0x45, 0x23, 0x01, 0xab, 0x89, 0xef, 0xcd, 0x01, 0x23, 0x45,
0x67, 0x89, 0xab, 0xcd, 0xef
]
);
Macros
Create an
AlignedGuid
from a string at compile time.Structs
Globally-unique identifier (8-byte aligned).
Globally-unique identifier (1-byte aligned).
Enums
Error type for
Guid::try_parse
and Guid::from_str
.