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}