use crate::prelude::*;
pub trait BitWrite: std::io::Write {
fn write_bits<O: BitStore>(&mut self, source: &BitSlice<O>) -> std::io::Result<usize>;
fn write_all_bits<O: BitStore>(&mut self, mut source: &BitSlice<O>) -> std::io::Result<()> {
while !source.is_empty() {
let n = self.write_bits(source)?;
if n == 0 {
return Err(std::io::Error::new(
std::io::ErrorKind::WriteZero,
"failed to write all bits",
));
}
source = &source[n..];
}
Ok(())
}
}