macro_rules! uuid {
($uuid:literal) => { ... };
}
Expand description
Parse Uuid
s 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");
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 0123456789abcdefABCDEF-, found Z at 9
|
| let id = uuid!("F9168C5E-ZEB2-4FAA-B6BF-329BF39FA1E4");
| ^
Tokens that aren’t string literals are also rejected:
ⓘ
let uuid_str: &str = "550e8400e29b41d4a716446655440000";
let uuid = uuid!(uuid_str);
Provides the following compilation error:
error: expected string literal
|
| let uuid = uuid!(uuid_str);
| ^^^^^^^^