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
sourceimpl Builder
impl Builder
sourcepub const fn from_bytes(b: Bytes) -> Self
pub const fn from_bytes(b: Bytes) -> Self
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(),
);
sourcepub const fn from_bytes_le(b: Bytes) -> Self
pub const fn from_bytes_le(b: Bytes) -> Self
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(),
);
sourcepub const fn from_random_bytes(b: Bytes) -> Self
pub const fn from_random_bytes(b: Bytes) -> Self
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());
sourcepub const fn from_md5_bytes(b: Bytes) -> Self
pub const fn from_md5_bytes(b: Bytes) -> Self
Creates a Builder
using the supplied MD5 hashed bytes.
sourcepub const fn from_sha1_bytes(b: Bytes) -> Self
pub const fn from_sha1_bytes(b: Bytes) -> Self
Creates a Builder
using the supplied SHA1 hashed bytes.
sourcepub fn from_slice(b: &[u8]) -> Result<Self, Error>
pub fn from_slice(b: &[u8]) -> Result<Self, Error>
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(),
);
sourcepub fn from_slice_le(b: &[u8]) -> Result<Self, Error>
pub fn from_slice_le(b: &[u8]) -> Result<Self, Error>
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(),
);
sourcepub const fn from_fields(d1: u32, d2: u16, d3: u16, d4: &[u8; 8]) -> Self
pub const fn from_fields(d1: u32, d2: u16, d3: u16, d4: &[u8; 8]) -> Self
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"
);
sourcepub const fn from_fields_le(d1: u32, d2: u16, d3: u16, d4: &[u8; 8]) -> Self
pub const fn from_fields_le(d1: u32, d2: u16, d3: u16, d4: &[u8; 8]) -> Self
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"
);
sourcepub const fn from_u128(v: u128) -> Self
pub const fn from_u128(v: u128) -> Self
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(),
);
sourcepub const fn from_u128_le(v: u128) -> Self
pub const fn from_u128_le(v: u128) -> Self
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(),
);
sourcepub fn set_variant(&mut self, v: Variant) -> &mut Self
pub fn set_variant(&mut self, v: Variant) -> &mut Self
Specifies the variant of the UUID.
sourcepub const fn with_variant(self, v: Variant) -> Self
pub const fn with_variant(self, v: Variant) -> Self
Specifies the variant of the UUID.
sourcepub fn set_version(&mut self, v: Version) -> &mut Self
pub fn set_version(&mut self, v: Version) -> &mut Self
Specifies the version number of the UUID.
sourcepub const fn with_version(self, v: Version) -> Self
pub const fn with_version(self, v: Version) -> Self
Specifies the version number of the UUID.
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for Builder
impl Send for Builder
impl Sync for Builder
impl Unpin for Builder
impl UnwindSafe for Builder
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more