Rust library for managing an interactive command-line session
- Rust 100%
| examples | Add docs for async functions | |
| src | Add docs for async functions | |
| .gitignore | Initial commit | |
| Cargo.toml | Bump version number | |
| README.md | add README | |
repl-rs
Library to help you create a REPL for your application.
Basic example code:
usestd::collections::HashMap;userepl_rs::{Command,Error,Parameter,Result,Value};userepl_rs::{Convert,Repl};// Add two numbers.
fn add<T>(args: HashMap<String,Value>,_context: &mutT)-> Result<Option<String>>{letfirst: i32 =args["first"].convert()?;letsecond: i32 =args["second"].convert()?;Ok(Some((first+second).to_string()))}// Write "Hello"
fn hello<T>(args: HashMap<String,Value>,_context: &mutT)-> Result<Option<String>>{Ok(Some(format!("Hello, {}",args["who"])))}fn main()-> Result<()>{letmutrepl=Repl::new(()).with_name("MyApp").with_version("v0.1.0").with_description("My very cool app").add_command(Command::new("add",add).with_parameter(Parameter::new("first").set_required(true)?)?.with_parameter(Parameter::new("second").set_required(true)?)?.with_help("Add two numbers together"),).add_command(Command::new("hello",hello).with_parameter(Parameter::new("who").set_required(true)?)?.with_help("Greetings!"),);repl.run()}Running the example above:
% my_app
Welcome to MyApp v0.1.0
MyApp> help
MyApp v0.1.0: My very cool app
------------------------------
add - Add two numbers together
hello - Greetings!
MyApp> help add
add: Add two numbers together
Usage:
add first second
MyApp> add 1 2
3
MyApp>