mlt_core/frames/v01/stream/
data.rs1use std::fmt;
2use std::io::Write;
3
4use super::{EncodedStream, EncodedStreamData, RawStream, RawStreamData};
5use crate::analyse::{Analyze, StatType};
6use crate::utils::formatter::fmt_byte_array;
7
8impl EncodedStream {
9 #[must_use]
10 pub fn as_borrowed(&self) -> RawStream<'_> {
11 RawStream {
12 meta: self.meta,
13 data: self.data.as_borrowed(),
14 }
15 }
16}
17
18impl RawStreamData<'_> {
19 #[must_use]
20 pub fn as_bytes(&self) -> &[u8] {
21 match self {
22 RawStreamData::VarInt(d) | RawStreamData::Encoded(d) => d,
23 }
24 }
25}
26
27impl EncodedStreamData {
28 #[must_use]
29 pub fn as_borrowed(&self) -> RawStreamData<'_> {
30 match self {
31 Self::VarInt(data) => RawStreamData::VarInt(data),
32 Self::Encoded(data) => RawStreamData::Encoded(data),
33 }
34 }
35
36 pub fn write_to<W: Write>(&self, writer: &mut W) -> std::io::Result<()> {
37 match self {
38 EncodedStreamData::VarInt(d) | EncodedStreamData::Encoded(d) => writer.write_all(d),
39 }
40 }
41}
42
43impl Analyze for RawStreamData<'_> {
44 fn collect_statistic(&self, stat: StatType) -> usize {
45 self.as_bytes().collect_statistic(stat)
46 }
47}
48
49impl fmt::Debug for RawStreamData<'_> {
50 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
51 match self {
52 RawStreamData::VarInt(d) | RawStreamData::Encoded(d) => fmt_byte_array(d, f),
53 }
54 }
55}
56
57impl fmt::Debug for EncodedStreamData {
58 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
59 match self {
60 EncodedStreamData::VarInt(d) | EncodedStreamData::Encoded(d) => fmt_byte_array(d, f),
61 }
62 }
63}