dicom_encoding::decode

Trait Decode

Source
pub trait Decode {
    // Required methods
    fn decode_header<S>(
        &self,
        source: &mut S,
    ) -> Result<(DataElementHeader, usize)>
       where S: ?Sized + Read;
    fn decode_item_header<S>(
        &self,
        source: &mut S,
    ) -> Result<SequenceItemHeader>
       where S: ?Sized + Read;
    fn decode_tag<S>(&self, source: &mut S) -> Result<Tag>
       where S: ?Sized + Read;
}
Expand description

Type trait for reading and decoding DICOM data elements.

The specific behaviour of decoding, even when abstracted from the original source, may depend on the transfer syntax.

Required Methods§

Source

fn decode_header<S>(&self, source: &mut S) -> Result<(DataElementHeader, usize)>
where S: ?Sized + Read,

Fetch and decode the next data element header from the given source. This method returns only the header of the element. At the end of this operation, the source will be pointing at the element’s value data, which should be read or skipped as necessary.

Decoding an item or sequence delimiter is considered valid, and so should be properly handled by the decoder. The value representation in this case should be UN.

Returns the expected header and the exact number of bytes read from the source.

Source

fn decode_item_header<S>(&self, source: &mut S) -> Result<SequenceItemHeader>
where S: ?Sized + Read,

Fetch and decode the next sequence item head from the given source. It is a separate method because value representation is always implicit when reading item headers and delimiters. This method returns only the header of the item. At the end of this operation, the source will be pointing at the beginning of the item’s data, which should be traversed if necessary.

Source

fn decode_tag<S>(&self, source: &mut S) -> Result<Tag>
where S: ?Sized + Read,

Decode a DICOM attribute tag from the given source.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<T> Decode for &T
where T: Decode + ?Sized,

Source§

fn decode_header<S>(&self, source: &mut S) -> Result<(DataElementHeader, usize)>
where S: ?Sized + Read,

Source§

fn decode_item_header<S>(&self, source: &mut S) -> Result<SequenceItemHeader>
where S: ?Sized + Read,

Source§

fn decode_tag<S>(&self, source: &mut S) -> Result<Tag>
where S: ?Sized + Read,

Source§

impl<T> Decode for Box<T>
where T: Decode + ?Sized,

Source§

fn decode_header<S>(&self, source: &mut S) -> Result<(DataElementHeader, usize)>
where S: ?Sized + Read,

Source§

fn decode_item_header<S>(&self, source: &mut S) -> Result<SequenceItemHeader>
where S: ?Sized + Read,

Source§

fn decode_tag<S>(&self, source: &mut S) -> Result<Tag>
where S: ?Sized + Read,

Implementors§