easy-repl 0.2.1

An easy to use REPL, ideal when there is a need to crate an ad-hoc shell
Documentation
use std::path::PathBuf;
use std::net::IpAddr;

use easy_repl::{Repl, CommandStatus, command};
use anyhow::{self, Context};

fn main() -> anyhow::Result<()> {
    let mut repl = Repl::builder()
        .add("ls", command! {
            "List files in a directory",
            (dir: PathBuf) => |dir: PathBuf| {
                for entry in dir.read_dir()? {
                    println!("{}", entry?.path().to_string_lossy());
                }
                Ok(CommandStatus::Done)
            }
        })
        .add("ipaddr", command! {
            "Just parse and print the given IP address",
            (ip: IpAddr) => |ip: IpAddr| {
                println!("{}", ip);
                Ok(CommandStatus::Done)
            }
        })
        .build().context("Failed to create repl")?;

    repl.run().context("Critical REPL error")
}