substrate_data/wire/
stream_writer.rs1use std::marker::PhantomData;
4
5use super::stream::Stream;
6use crate::binary::Writer;
7use crate::schema::Schema;
8
9#[derive(Debug)]
11pub struct StreamWriter<T> {
12 pub(super) w: Writer,
13 pub(super) len: usize,
14 pub(super) item: PhantomData<fn() -> T>,
15}
16
17impl<T: Schema> StreamWriter<T> {
18 pub fn push(&mut self, item: &T) {
20 item.encode(&mut self.w);
21 self.len += 1;
22 }
23
24 #[must_use]
26 pub fn finish(self) -> Stream<T> {
27 Stream::from_written(self.w.finish(), self.len)
28 }
29}