Expand description
Decoding DBN and Zstd-compressed DBN files and streams.
The primary entry point is DbnDecoder, which reads DBN data from any
io::Read source (files, network streams, in-memory buffers).
When the format or compression is unknown at compile time, use DynDecoder
to auto-detect from the first few bytes.
Sync decoders implement the DecodeDbn trait. With the async feature flag,
async variants are also available.
§Examples
Decode a DBN file, dispatching on record type:
use dbn::decode::{DbnDecoder, DecodeRecordRef, DbnMetadata};
use dbn::{TradeMsg, OhlcvMsg, Record};
let mut decoder = DbnDecoder::from_zstd_file("20241007.dbn.zst")?;
println!("schema: {:?}", decoder.metadata().schema);
while let Some(rec_ref) = decoder.decode_record_ref()? {
if let Some(trade) = rec_ref.get::<TradeMsg>() {
println!("trade: instrument={} price={}", trade.hd.instrument_id, trade.price);
} else if let Some(bar) = rec_ref.get::<OhlcvMsg>() {
println!("bar: instrument={} close={}", bar.hd.instrument_id, bar.close);
}
}Decode all records of a known type into a Vec:
use dbn::decode::{DbnDecoder, DecodeRecord};
use dbn::MboMsg;
let decoder = DbnDecoder::from_zstd_file("20241007.mbo.dbn.zst")?;
let records: Vec<MboMsg> = decoder.decode_records()?;
println!("{} MBO records", records.len());Re-exports§
pub use self::dbn::Decoder as DbnDecoder;pub use self::dbn::MetadataDecoder as DbnMetadataDecoder;pub use self::dbn::RecordDecoder as DbnRecordDecoder;pub use self::dbn::AsyncDecoder as AsyncDbnDecoder;asyncpub use self::dbn::AsyncMetadataDecoder as AsyncDbnMetadataDecoder;asyncpub use self::dbn::AsyncRecordDecoder as AsyncDbnRecordDecoder;async
Modules§
Structs§
- Async
DynReader async - A type for runtime polymorphism on compressed and uncompressed input.
The async version of
DynReader. - DynDecoder
- A decoder whose
EncodingandCompressionare determined at runtime by peeking at the first few bytes. - DynReader
- Type for runtime polymorphism over whether decoding uncompressed or Zstd-compressed
DBN records. Implements
std::io::Write. - Merge
Decoder - Merges the DBN decoding streams from one or more other decoders. Both metadata and the record streams are merged.
- Merge
Record Decoder - Merges the record decoding streams from one or more other decoders, performing a
k-merge based on
Record::index_ts(). - Stream
Iter Decoder - A consuming iterator wrapping a
DecodeRecord. Lazily decodes the contents of the file or other input stream.
Traits§
- Async
Decode Record async - Async trait for types that decode DBN records of a particular type.
- Async
Decode Record Ref async - Async trait for types that decode references to DBN records of a dynamic type.
- Async
Skip Bytes async - Like
AsyncSeek, but only allows seeking forward from the current position. - DbnMetadata
- Trait for decoders with metadata about what’s being decoded.
- Decode
Dbn - A trait alias for DBN decoders with metadata.
- Decode
Record - Trait for types that decode DBN records of a particular type.
- Decode
Record Ref - Trait for types that decode references to DBN records of a dynamic type.
- Decode
Stream - A trait for decoders that can be converted to streaming iterators.
- Skip
Bytes - Like
Seek, but only allows seeking forward from the current position.