mirror of
https://github.com/lifegpc/msg-tool.git
synced 2026-06-11 07:28:49 +08:00
29 lines
537 B
Rust
29 lines
537 B
Rust
use adler::Adler32;
|
|
use std::io::{PipeReader, Read};
|
|
|
|
pub struct Reader {
|
|
inner: PipeReader,
|
|
adler: Adler32,
|
|
}
|
|
|
|
impl Reader {
|
|
pub fn new(inner: PipeReader) -> Self {
|
|
Self {
|
|
inner,
|
|
adler: Adler32::new(),
|
|
}
|
|
}
|
|
|
|
pub fn into_checksum(self) -> u32 {
|
|
self.adler.checksum()
|
|
}
|
|
}
|
|
|
|
impl Read for Reader {
|
|
fn read(&mut self, buf: &mut [u8]) -> std::io::Result<usize> {
|
|
let n = self.inner.read(buf)?;
|
|
self.adler.write_slice(&buf[..n]);
|
|
Ok(n)
|
|
}
|
|
}
|