pub enum EncodingDatum<TEncoding: TermEncoding + ?Sized> {
Array(TEncoding::Array),
Scalar(TEncoding::Scalar, usize),
}
Expand description
Represents either an array or a scalar for a given encoding.
As the scalar variant also stores length information, one can obtain an iterator (Self::term_iter) independently on whether the underlying data is an array or a scalar. This is useful for scenarios in which distinguishing between array/scalar is not necessary or too complex.
Variants§
Array(TEncoding::Array)
An array underlies this datum.
Scalar(TEncoding::Scalar, usize)
A scalar underlies this datum. The additional length value is crucial for creating an iterator of a given length.
Implementations§
Source§impl<TEncoding: TermEncoding + ?Sized> EncodingDatum<TEncoding>
impl<TEncoding: TermEncoding + ?Sized> EncodingDatum<TEncoding>
Sourcepub fn term_iter<'data, TDecoder>(
&'data self,
) -> Box<dyn Iterator<Item = ThinResult<TDecoder::Term<'data>>> + 'data>where
TDecoder: TermDecoder<TEncoding> + 'data,
pub fn term_iter<'data, TDecoder>(
&'data self,
) -> Box<dyn Iterator<Item = ThinResult<TDecoder::Term<'data>>> + 'data>where
TDecoder: TermDecoder<TEncoding> + 'data,
Creates an iterator over the contents of this datum.
For an array, the iterator will simply return the result from the decoder.
For a scalar, the value of the scalar will be cloned for each iteration, as dictated by the additional length.
Auto Trait Implementations§
impl<TEncoding> Freeze for EncodingDatum<TEncoding>where
<TEncoding as TermEncoding>::Array: Freeze,
<TEncoding as TermEncoding>::Scalar: Freeze,
TEncoding: ?Sized,
impl<TEncoding> RefUnwindSafe for EncodingDatum<TEncoding>where
<TEncoding as TermEncoding>::Array: RefUnwindSafe,
<TEncoding as TermEncoding>::Scalar: RefUnwindSafe,
TEncoding: ?Sized,
impl<TEncoding> Send for EncodingDatum<TEncoding>where
<TEncoding as TermEncoding>::Array: Send,
<TEncoding as TermEncoding>::Scalar: Send,
TEncoding: ?Sized,
impl<TEncoding> Sync for EncodingDatum<TEncoding>where
<TEncoding as TermEncoding>::Array: Sync,
<TEncoding as TermEncoding>::Scalar: Sync,
TEncoding: ?Sized,
impl<TEncoding> Unpin for EncodingDatum<TEncoding>where
<TEncoding as TermEncoding>::Array: Unpin,
<TEncoding as TermEncoding>::Scalar: Unpin,
TEncoding: ?Sized,
impl<TEncoding> UnwindSafe for EncodingDatum<TEncoding>where
<TEncoding as TermEncoding>::Array: UnwindSafe,
<TEncoding as TermEncoding>::Scalar: UnwindSafe,
TEncoding: ?Sized,
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
Mutably borrows from an owned value. Read more
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>
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 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>
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