Skip to main content

marc_rs/raw/
writer.rs

1use std::io::Write;
2
3use crate::{MarcError, MarcFormat, Record};
4
5pub struct BinaryWriter<W: Write> {
6    writer: W,
7}
8
9impl<W: Write> BinaryWriter<W> {
10    pub fn new(writer: W) -> Self {
11        Self { writer }
12    }
13
14    pub fn write_raw(&mut self, data: &[u8]) -> Result<(), MarcError> {
15        self.writer.write_all(data)?;
16        Ok(())
17    }
18
19    pub fn write_record(&mut self, format: &MarcFormat, record: &mut Record) -> Result<(), MarcError> {
20        let raw = format.to_raw(record)?;
21        self.write_raw(raw.data())
22    }
23
24    pub fn flush(&mut self) -> Result<(), MarcError> {
25        self.writer.flush()?;
26        Ok(())
27    }
28}