rsteract 0.1.0

From stdin to String and back to stdout
Documentation
use std::io::{Read, Write};

pub mod stdio;

pub fn interact(
    mut r: impl Read,
    mut w: impl Write,
    f: impl Fn(String) -> String,
) -> Result<(), std::io::Error> {
    let mut input = String::new();
    r.read_to_string(&mut input)?;
    let output = f(input);
    w.write_all(output.as_bytes())
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn interact_with_write_read_traits() {
        let mut input = b"1234".as_ref();
        let mut output = Vec::<u8>::new();
        let res = interact(&mut input, &mut output, |x| x.chars().rev().collect());
        assert!(res.is_ok());
        assert_eq!(b"4321".as_ref(), &output);
    }
}