Enum dicom_parser::dataset::LazyDataToken

source ·
#[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
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

ElementHeader(DataElementHeader)

A data header of a primitive value.

§

SequenceStart

The beginning of a sequence element.

Fields

§tag: Tag
§

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.

Fields

§

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

Fields

§len: u32

the full length of the value, always well defined

§decoder: D

the stateful decoder for fetching the bytes of the value

Implementations§

source§

impl<D> LazyDataToken<D>

source

pub fn is_sequence_start(&self) -> bool

Check whether this token represents the start of a sequence of nested data sets.

source

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,

source

pub fn skip(self) -> Result<()>

source

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.

source

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.

source

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.

source

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.

source

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.

source

pub fn into_repr(self) -> LazyDataTokenRepr

Convert this token into a structured representation, for diagnostics and error reporting purposes.

source

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>

source§

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

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

impl<D> From<&LazyDataToken<D>> for LazyDataTokenRepr

source§

fn from(token: &LazyDataToken<D>) -> Self

Converts to this type from the input type.
source§

impl<D> From<LazyDataToken<D>> for LazyDataTokenRepr

source§

fn from(token: LazyDataToken<D>) -> Self

Converts to this type from the input type.

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> 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> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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<T, U> TryFrom<U> for T
where U: Into<T>,

§

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>,

§

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<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more