hyper-inspect-io 0.1.0

An adapter for inspecting hyper's IO transports
Documentation
use std::io;

pub struct PrintInspect;

impl crate::InspectRead for PrintInspect {
    fn inspect_read(&mut self, value: Result<&[u8], &io::Error>) {
        match value {
            Ok(buf) => println!("read: {}", buf.len()),
            Err(e) => eprintln!("read: {e}"),
        }
    }
}

impl crate::InspectWrite for PrintInspect {
    fn inspect_write(&mut self, value: Result<&[u8], &io::Error>) {
        match value {
            Ok(buf) => println!("write: {}", buf.len()),
            Err(e) => eprintln!("write: {e}"),
        }
    }

    fn inspect_flush(&mut self, value: Result<(), &io::Error>) {
        match value {
            Ok(_) => println!("flush"),
            Err(e) => eprintln!("flush: {e}"),
        }
    }

    fn inspect_shutdown(&mut self, value: Result<(), &io::Error>) {
        match value {
            Ok(_) => println!("shutdown"),
            Err(e) => eprintln!("shutdown: {e}"),
        }
    }

    fn inspect_write_vectored<'a, I>(&mut self, value: Result<I, &io::Error>)
    where
        I: Iterator<Item = &'a [u8]>,
    {
        match value {
            Ok(bufs) => println!("write_vectored: {}", bufs.map(<[_]>::len).sum::<usize>()),
            Err(e) => eprintln!("write_vectored: {e}"),
        }
    }
}

impl Drop for PrintInspect {
    fn drop(&mut self) {
        println!("drop");
    }
}