pub enum Encoded<V: InlineEncoding> {
Inline(Inline<V>),
Blob(Blob<UnknownBlob>),
}Expand description
The two-shape sum an attribute’s value can take when an
entity!{} field is encoded: either a 32-byte Inline<V>
payload that lives directly in the trible, or a [Blob] holding
the heavy content with a derivable handle.
Replaces the older (Inline<V>, Option<Blob>) pair that carried
an implicit “Option is Some iff V is a Handle schema” invariant.
Encoding the split as a sum makes the invariant structural — a
Encoded::Inline never has a stored blob; a Encoded::Blob always
does — and drops the redundant handle that used to be carried
alongside its own blob.
Variants§
Inline(Inline<V>)
32-byte payload stored directly in the trible.
Blob(Blob<UnknownBlob>)
Bytes resolvable via a content-addressed handle. The handle
is blob.get_handle().transmute::<V>() — the same 32 bytes,
just re-phantomed back to the attribute’s schema.
Implementations§
Source§impl<V: InlineEncoding> Encoded<V>
impl<V: InlineEncoding> Encoded<V>
Sourcepub fn inline(&self) -> Inline<V>
pub fn inline(&self) -> Inline<V>
The 32-byte form that goes into the trible. For
Encoded::Blob, this rederives the handle from the cached
hash in the blob (no rehash) and recasts the phantom.
Sourcepub fn into_parts(self) -> (Inline<V>, Option<Blob<UnknownBlob>>)
pub fn into_parts(self) -> (Inline<V>, Option<Blob<UnknownBlob>>)
Yield the inline form alongside the side-blob (if any). This
is the macro consumer’s destructuring entry point — it gets
both pieces in one call without losing the structural
guarantee from Encoded.
Trait Implementations§
Auto Trait Implementations§
impl<V> Freeze for Encoded<V>
impl<V> !RefUnwindSafe for Encoded<V>
impl<V> Send for Encoded<V>where
V: Send,
impl<V> Sync for Encoded<V>where
V: Sync,
impl<V> Unpin for Encoded<V>where
V: Unpin,
impl<V> UnsafeUnpin for Encoded<V>
impl<V> !UnwindSafe for Encoded<V>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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