#[non_exhaustive]pub enum LazyDataToken<D> {
ElementHeader(DataElementHeader),
SequenceStart {
tag: Tag,
len: Length,
},
PixelSequenceStart,
SequenceEnd,
ItemStart {
len: Length,
},
ItemEnd,
LazyValue {
header: DataElementHeader,
decoder: D,
},
LazyItemValue {
len: u32,
decoder: D,
},
}
Expand description
A lazy data token for reading a data set without requiring values to be fully read in memory. This is part of the interpretation of a data set as a stream of symbols, which may either represent data headers or actual value data.
The parameter type D
represents
the original type of the stateful decoder,
and through which the values can be retrieved.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
ElementHeader(DataElementHeader)
A data header of a primitive value.
SequenceStart
The beginning of a sequence element.
PixelSequenceStart
The beginning of an encapsulated pixel data element.
SequenceEnd
The ending delimiter of a sequence or encapsulated pixel data.
ItemStart
The beginning of a new item in the sequence.
ItemEnd
The ending delimiter of an item.
LazyValue
An element value yet to be fetched
Fields
header: DataElementHeader
the header of the respective value
decoder: D
the stateful decoder for fetching the bytes of the value
LazyItemValue
An item value yet to be fetched
Implementations§
Source§impl<D> LazyDataToken<D>
impl<D> LazyDataToken<D>
Sourcepub fn is_sequence_start(&self) -> bool
pub fn is_sequence_start(&self) -> bool
Check whether this token represents the start of a sequence of nested data sets.
Sourcepub fn is_sequence_end(&self) -> bool
pub fn is_sequence_end(&self) -> bool
Check whether this token represents the end of a sequence or the end of an encapsulated element.
Source§impl<D> LazyDataToken<D>where
D: StatefulDecode,
impl<D> LazyDataToken<D>where
D: StatefulDecode,
pub fn skip(self) -> Result<()>
Sourcepub fn into_owned(self) -> Result<DataToken>
pub fn into_owned(self) -> Result<DataToken>
Construct the data token into memory, consuming the reader if necessary.
If the token represents a lazy element value, the inner decoder is read with string preservation.
Sourcepub fn into_owned_with_strategy(
self,
strategy: ValueReadStrategy,
) -> Result<DataToken>
pub fn into_owned_with_strategy( self, strategy: ValueReadStrategy, ) -> Result<DataToken>
Construct the data token into memory, consuming the reader if necessary.
If the token represents a lazy element value, the inner decoder is read with the given value reading strategy.
Sourcepub fn into_value_with_strategy(
self,
strategy: ValueReadStrategy,
) -> Result<PrimitiveValue>
pub fn into_value_with_strategy( self, strategy: ValueReadStrategy, ) -> Result<PrimitiveValue>
Retrieve a primitive element value from the token, consuming the reader with the given reading strategy.
The operation fails if the token does not represent an element value.
Sourcepub fn into_value(self) -> Result<PrimitiveValue>
pub fn into_value(self) -> Result<PrimitiveValue>
Retrieve a primitive element value from the token, consuming the reader with the default reading strategy.
The operation fails if the token does not represent an element value.
Sourcepub fn read_value_into<W>(self, out: W) -> Result<()>where
W: Write,
pub fn read_value_into<W>(self, out: W) -> Result<()>where
W: Write,
Read the bytes of a value into the given writer, consuming the reader.
This operation will not interpret the value,
like in the Bytes
value reading strategy.
It works for both data elements and non-dataset items.
The operation fails if the token does not represent an element or item value.
Sourcepub fn into_repr(self) -> LazyDataTokenRepr
pub fn into_repr(self) -> LazyDataTokenRepr
Convert this token into a structured representation, for diagnostics and error reporting purposes.
Sourcepub fn repr(&self) -> LazyDataTokenRepr
pub fn repr(&self) -> LazyDataTokenRepr
Create a structured representation of this token, for diagnostics and error reporting purposes.
Trait Implementations§
Source§impl<D: Debug> Debug for LazyDataToken<D>
impl<D: Debug> Debug for LazyDataToken<D>
Source§impl<D> From<&LazyDataToken<D>> for LazyDataTokenRepr
impl<D> From<&LazyDataToken<D>> for LazyDataTokenRepr
Source§fn from(token: &LazyDataToken<D>) -> Self
fn from(token: &LazyDataToken<D>) -> Self
Source§impl<D> From<LazyDataToken<D>> for LazyDataTokenRepr
impl<D> From<LazyDataToken<D>> for LazyDataTokenRepr
Source§fn from(token: LazyDataToken<D>) -> Self
fn from(token: LazyDataToken<D>) -> Self
Auto Trait Implementations§
impl<D> Freeze for LazyDataToken<D>where
D: Freeze,
impl<D> RefUnwindSafe for LazyDataToken<D>where
D: RefUnwindSafe,
impl<D> Send for LazyDataToken<D>where
D: Send,
impl<D> Sync for LazyDataToken<D>where
D: Sync,
impl<D> Unpin for LazyDataToken<D>where
D: Unpin,
impl<D> UnwindSafe for LazyDataToken<D>where
D: UnwindSafe,
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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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