Crate ebml_iterable[−][src]
Expand description
This crate provides an iterator and a serializer for EBML files. Its primary goal is to provide typed iteration and serialization as lightly and quickly as possible.
EBML stands for Extensible Binary Meta-Language and is somewhat of a binary version of XML. It’s used for container formats like WebM or MKV.
Important - Specifications
The iterator contained in this crate is spec-agnostic and requires a specification implementing the specs::EbmlSpecification
and specs::EbmlTag
traits to read files. Typically, you would only use this crate to implement a custom specification - most often you would prefer a crate providing an existing specification, like webm-iterable.
Implementing custom specifications can be made less painful by enabling the "derive-spec"
feature flag in this crate and using the #[ebml_specification]
macro.
Features
There is currently only one optional feature in this crate, but that may change over time as needs arise.
- derive-spec -
When enabled, this provides the
#[ebml_specification]
attribute macro to simplify implementation of theEbmlSpecification
andEbmlTag
traits. This introduces dependencies onsyn
,quote
, andproc-macro2
, so expect compile times to increase a little.
Known Limitations
This library was not built to work with an “Unknown Data Size” as defined in RFC8794. As such, it likely will not support streaming applications and will only work on complete datasets.
Modules
Potential errors that can occur when reading or writing EBML data.
Provides the EBML specification types.
Contains a number of tools that are useful when working with EBML encoded files.
Structs
Provides an iterator over EBML files (read from a source implementing the std::io::Read
trait). Can be configured to read specific “Master” tags as complete objects rather than just emitting when they start and end.
Provides a tool to write EBML files based on Tags. Writes to a destination that implements std::io::Write
.