Macro kernel::registry::uuid

source ·
macro_rules! uuid {
    ($uuid:expr) => { ... };
}
Expand description

Parse Uuids from string literals at compile time.

§Usage

This macro transforms the string literal representation of a Uuid into the bytes representation, raising a compilation error if it cannot properly be parsed.

§Examples

Setting a global constant:

pub const SCHEMA_ATTR_CLASS: Uuid = uuid!("00000000-0000-0000-0000-ffff00000000");
pub const SCHEMA_ATTR_UUID: Uuid = uuid!("00000000-0000-0000-0000-ffff00000001");
pub const SCHEMA_ATTR_NAME: Uuid = uuid!("00000000-0000-0000-0000-ffff00000002");

Defining a local variable:

let uuid = uuid!("urn:uuid:F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4");

Using a const variable:

const UUID_STR: &str = "12345678-1234-5678-1234-567812345678";
let UUID = uuid!(UUID_STR);

§Compilation Failures

Invalid UUIDs are rejected:

let uuid = uuid!("F9168C5E-ZEB2-4FAA-B6BF-329BF39FA1E4");

Enable the feature macro-diagnostics to see the error messages below.

Provides the following compilation error:

error: invalid character: expected an optional prefix of `urn:uuid:` followed by [0-9a-fA-F-], found Z at 9
    |
    |     let id = uuid!("F9168C5E-ZEB2-4FAA-B6BF-329BF39FA1E4");
    |                              ^