use std::io::Write;
pub trait JpegWriter {
fn write_marker(&mut self, data: &[u8]);
fn write_array(&mut self, data: &[u8]);
}
impl<W: Write> JpegWriter for W {
fn write_marker(&mut self, data: &[u8]) {
self.write_all(data).expect("IO Error");
}
fn write_array(&mut self, data: &[u8]) {
if data.len() >= 4 {
let length = ((data[2] as usize) << 8) + (data[3] as usize) + 2;
self.write_all(&data[..length.min(data.len())])
.expect("IO Error");
} else {
eprintln!("Error: Data slice is too short in write_array.");
}
}
}
impl JpegWriter for dyn std::io::Write {
fn write_marker(&mut self, data: &[u8]) {
self.write_all(data).expect("IO Error");
}
fn write_array(&mut self, data: &[u8]) {
let length = ((data[2] as usize) << 8) + (data[3] as usize) + 2;
self.write_all(&data[..length]).expect("IO Error");
}
}