imap-proto 0.16.5

IMAP protocol parser and data structures
Documentation
use imap_proto::Response;
use std::io::Write;

fn main() -> std::io::Result<()> {
    loop {
        let line = {
            print!("Enter IMAP4REV1 response: ");
            std::io::stdout().flush().unwrap();

            let mut line = String::new();
            std::io::stdin().read_line(&mut line)?;
            line
        };

        match Response::from_bytes(line.replace('\n', "\r\n").as_bytes()) {
            Ok((remaining, command)) => {
                println!("{command:#?}");

                if !remaining.is_empty() {
                    println!("Remaining data in buffer: {remaining:?}");
                }
            }
            Err(_) => {
                println!("Error parsing the response. Is it correct? Exiting.");
                break;
            }
        }
    }

    Ok(())
}