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’s Pod and Zeroable traits for Guid.
  • serde: Implements serde’s Serialize and Deserialize traits for Guid.
  • std: Provides std::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.
Create an unaligned Guid from a string at compile time.

Structs

Globally-unique identifier (8-byte aligned).
Globally-unique identifier (1-byte aligned).

Enums