Skip to main content

Id

Struct Id 

Source
pub struct Id { /* private fields */ }
Expand description

Represents a unique abstract 128 bit identifier. As we do not allow for all zero nil IDs, Option<Id> benefits from Option nieche optimizations.

Note that it has an alignment of 1, and can be referenced as a [u8; 16] RawId.

Implementations§

Source§

impl Id

Source

pub const fn new(id: RawId) -> Option<Self>

Creates a new Id from a RawId 16 byte array.

Source

pub fn from_hex(hex: &str) -> Option<Self>

Parses a hexadecimal identifier string into an Id.

Returns None if the input is not valid hexadecimal or represents the nil identifier (all zero bytes).

Source

pub const unsafe fn force(id: RawId) -> Self

Forces the creation of an Id from a RawId without checking for nil.

§Safety

The caller must ensure that id is not the nil value of all zero bytes.

Source

pub fn as_transmute_raw(id: &RawId) -> Option<&Self>

Transmutes a reference to a RawId into a reference to an Id. Returns None if the referenced RawId is nil (all zero).

Source

pub fn aquire(&self) -> Option<ExclusiveId>

Takes ownership of this Id from the current write context (i.e. thread). Returns None if this Id was not found, because it is not associated with this write context, or because it is currently aquired.

Source

pub const fn raw(self) -> RawId

Returns the raw 16-byte representation of this identifier.

This is const so schema identifiers can be composed at compile time.

Trait Implementations§

Source§

impl AsRef<[u8]> for Id

Source§

fn as_ref(&self) -> &[u8]

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl AsRef<[u8; 16]> for Id

Source§

fn as_ref(&self) -> &RawId

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl AsRef<Id> for ExclusiveId

Source§

fn as_ref(&self) -> &Id

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl AsRef<Id> for OwnedId<'_>

Source§

fn as_ref(&self) -> &Id

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl Borrow<[u8; 16]> for Id

Source§

fn borrow(&self) -> &RawId

Immutably borrows from an owned value. Read more
Source§

impl Borrow<Id> for ExclusiveId

Source§

fn borrow(&self) -> &Id

Immutably borrows from an owned value. Read more
Source§

impl Borrow<Id> for OwnedId<'_>

Source§

fn borrow(&self) -> &Id

Immutably borrows from an owned value. Read more
Source§

impl Clone for Id

Source§

fn clone(&self) -> Id

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Id

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Deref for Id

Source§

type Target = [u8; 16]

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl Display for Id

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl From<Id> for RawId

Source§

fn from(id: Id) -> Self

Converts to this type from the input type.
Source§

impl From<Id> for RawValue

Source§

fn from(id: Id) -> Self

Converts to this type from the input type.
Source§

impl From<Id> for Uuid

Source§

fn from(id: Id) -> Self

Converts to this type from the input type.
Source§

impl Hash for Id

Source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl LowerHex for Id

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Ord for Id

Source§

fn cmp(&self, other: &Self) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl PartialEq for Id

Source§

fn eq(&self, other: &Id) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialOrd for Id

Source§

fn partial_cmp(&self, other: &Self) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl ToValue<GenId> for &Id

Source§

fn to_value(self) -> Value<GenId>

Convert the Rust type to a Value with a specific schema type. This might cause a panic if the conversion is not possible. Read more
Source§

impl ToValue<GenId> for Id

Source§

fn to_value(self) -> Value<GenId>

Convert the Rust type to a Value with a specific schema type. This might cause a panic if the conversion is not possible. Read more
Source§

impl TryFrom<Uuid> for Id

Source§

type Error = NilUuidError

The type returned in the event of a conversion error.
Source§

fn try_from(id: Uuid) -> Result<Self, NilUuidError>

Performs the conversion.
Source§

impl TryFromValue<'_, GenId> for Id

Source§

type Error = IdParseError

The error type returned when the conversion fails.
Source§

fn try_from_value(value: &Value<GenId>) -> Result<Self, Self::Error>

Convert the Value with a specific schema type to the Rust type.
Source§

impl<'a> TryFromValue<'a, GenId> for &'a Id

Source§

type Error = IdParseError

The error type returned when the conversion fails.
Source§

fn try_from_value(value: &'a Value<GenId>) -> Result<Self, Self::Error>

Convert the Value with a specific schema type to the Rust type.
Source§

impl UpperHex for Id

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Copy for Id

Source§

impl Eq for Id

Source§

impl StructuralPartialEq for Id

Auto Trait Implementations§

§

impl Freeze for Id

§

impl RefUnwindSafe for Id

§

impl Send for Id

§

impl Sync for Id

§

impl Unpin for Id

§

impl UnsafeUnpin for Id

§

impl UnwindSafe for Id

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Comparable<K> for Q
where Q: Ord + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn compare(&self, key: &K) -> Ordering

Compare self to key and return their ordering.
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

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

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToHex for T
where T: AsRef<[u8]>,

Source§

fn encode_hex<U>(&self) -> U
where U: FromIterator<char>,

Encode the hex strict representing self into the result. Lower case letters are used (e.g. f9b4ca)
Source§

fn encode_hex_upper<U>(&self) -> U
where U: FromIterator<char>,

Encode the hex strict representing self into the result. Upper case letters are used (e.g. F9B4CA)
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V