use extra_embedded_io_adapters::WritableDigest;
use sha2::Digest;
use windowed_infinity::WindowedInfinity;
fn write_to(w: &mut impl core::fmt::Write) {
w.write_str("Lorem ipsum dolor sit amet.").unwrap();
}
fn main() {
let mut data = [0u8; 20];
let mut writer = tee_embedded_io::Tee::new(
WindowedInfinity::new(&mut data, 0),
WritableDigest(sha2::Sha256::new()),
);
write_to(&mut embedded_io_adapters::fmt::ToFmt::new(&mut writer));
let (writer, WritableDigest(etag)) = writer.into_parts();
println!(
"First chunk is: {:?}, total sha256 {:x}",
std::str::from_utf8(writer.written()),
etag.finalize()
);
let mut writer = tee_embedded_io::Tee::new(
WindowedInfinity::new(&mut data, -20),
WritableDigest(sha2::Sha256::new()),
);
write_to(&mut embedded_io_adapters::fmt::ToFmt::new(&mut writer));
let (writer, WritableDigest(etag)) = writer.into_parts();
println!(
"Second chunk is: {:?}, total sha256 {:x}",
std::str::from_utf8(writer.written()),
etag.finalize(),
);
}