Crate ebml_iterable
source ·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 and safer 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.
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
. - Options that can be passed to the writer to customize written output