logo
pub struct Builder(_);
Expand description

A builder struct for creating a UUID.

This type is useful if you need to mutate individual fields of a Uuid while constructing it. Since the Uuid type is Copy, it doesn’t offer any methods to mutate in place. They live on the Builder instead.

Examples

Creating a v4 UUID from externally generated bytes:

let random_bytes = rng();

let uuid = Builder::from_random_bytes(random_bytes).into_uuid();

assert_eq!(Some(Version::Random), uuid.get_version());
assert_eq!(Variant::RFC4122, uuid.get_variant());

Implementations

Creates a Builder using the supplied bytes.

Examples

Basic usage:

let bytes = [
    0xa1, 0xa2, 0xa3, 0xa4,
    0xb1, 0xb2,
    0xc1, 0xc2,
    0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8,
];

let uuid = Builder::from_bytes(bytes).into_uuid();

assert_eq!(
    "a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8",
    uuid.hyphenated().to_string(),
);

Creates a Builder using the supplied bytes in little endian order.

The individual fields encoded in the buffer will be flipped.

Examples

Basic usage:

let bytes = [
    0xa1, 0xa2, 0xa3, 0xa4,
    0xb1, 0xb2,
    0xc1, 0xc2,
    0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8,
];

let uuid = Builder::from_bytes_le(bytes).into_uuid();

assert_eq!(
    "a4a3a2a1-b2b1-c2c1-d1d2-d3d4d5d6d7d8",
    uuid.hyphenated().to_string(),
);

Creates a Builder using the supplied random bytes.

This method can be useful in environments where the v4 feature isn’t available. This method will take care of setting the appropriate version and variant fields.

Examples
let random_bytes = rng();
let uuid = Builder::from_random_bytes(random_bytes).into_uuid();

assert_eq!(Some(Version::Random), uuid.get_version());
assert_eq!(Variant::RFC4122, uuid.get_variant());

Creates a Builder using the supplied MD5 hashed bytes.

Creates a Builder using the supplied SHA1 hashed bytes.

Creates a Builder using the supplied bytes.

Errors

This function will return an error if b has any length other than 16.

Examples

Basic usage:

let bytes = [
    0xa1, 0xa2, 0xa3, 0xa4,
    0xb1, 0xb2,
    0xc1, 0xc2,
    0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8,
];

let uuid = Builder::from_slice(&bytes)?.into_uuid();

assert_eq!(
    "a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8",
    uuid.hyphenated().to_string(),
);

Creates a Builder using the supplied bytes in little endian order.

The individual fields encoded in the buffer will be flipped.

Errors

This function will return an error if b has any length other than 16.

Examples

Basic usage:

let bytes = [
    0xa1, 0xa2, 0xa3, 0xa4,
    0xb1, 0xb2,
    0xc1, 0xc2,
    0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8,
];

let uuid = Builder::from_slice_le(&bytes)?.into_uuid();

assert_eq!(
    "a4a3a2a1-b2b1-c2c1-d1d2-d3d4d5d6d7d8",
    uuid.hyphenated().to_string(),
);

Creates a Builder from four field values.

Examples

Basic usage:

let d1 = 0xa1a2a3a4;
let d2 = 0xb1b2;
let d3 = 0xc1c2;
let d4 = [0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8];

let uuid = Builder::from_fields(d1, d2, d3, &d4).into_uuid();

assert_eq!(
    uuid.hyphenated().to_string(),
    "a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8"
);

Creates a Builder from four field values.

Examples

Basic usage:

let d1 = 0xa1a2a3a4;
let d2 = 0xb1b2;
let d3 = 0xc1c2;
let d4 = [0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8];

let uuid = Builder::from_fields_le(d1, d2, d3, &d4).into_uuid();

assert_eq!(
    uuid.hyphenated().to_string(),
    "a4a3a2a1-b2b1-c2c1-d1d2-d3d4d5d6d7d8"
);

Creates a Builder from a 128bit value.

Examples

Basic usage:

let v = 0xa1a2a3a4b1b2c1c2d1d2d3d4d5d6d7d8u128;

let uuid = Builder::from_u128(v).into_uuid();

assert_eq!(
    "a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8",
    uuid.hyphenated().to_string(),
);

Creates a UUID from a 128bit value in little-endian order.

Examples

Basic usage:

let v = 0xa1a2a3a4b1b2c1c2d1d2d3d4d5d6d7d8u128;

let uuid = Builder::from_u128_le(v).into_uuid();

assert_eq!(
    "d8d7d6d5-d4d3-d2d1-c2c1-b2b1a4a3a2a1",
    uuid.hyphenated().to_string(),
);

Creates a Builder with an initial Uuid::nil.

Examples

Basic usage:

let uuid = Builder::nil().into_uuid();

assert_eq!(
    "00000000-0000-0000-0000-000000000000",
    uuid.hyphenated().to_string(),
);

Specifies the variant of the UUID.

Specifies the variant of the UUID.

Specifies the version number of the UUID.

Specifies the version number of the UUID.

Get a reference to the underlying Uuid.

Examples

Basic usage:

let builder = Builder::nil();

let uuid1 = builder.as_uuid();
let uuid2 = builder.as_uuid();

assert_eq!(uuid1, uuid2);

Convert the builder into a Uuid.

Examples

Basic usage:

let uuid = Builder::nil().into_uuid();

assert_eq!(
    uuid.hyphenated().to_string(),
    "00000000-0000-0000-0000-000000000000"
);

Trait Implementations

Formats the value using the given formatter. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Should always be Self

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.