Crates.io | repl-block |
lib.rs | repl-block |
version | 0.10.0 |
source | src |
created_at | 2024-05-15 01:15:22.611471 |
updated_at | 2024-08-11 16:27:42.045584 |
description | A crossterm-based library for building Read-Eval-Print-Loops (REPLs). |
homepage | |
repository | https://github.com/jjpe/repl-block.git |
max_upload_size | |
id | 1240509 |
size | 65,034 |
This crate provides a simple and easy way to build a Read-Eval-Print-Loop
,
a.k.a. REPL.
Add a dependency on this crate to your project's Cargo.toml
:
[dependencies]
repl-block= "0.9.0"
Then one can use the ReplBuilder
type to build an start a REPL like this:
use repl_block::prelude::{ReplBuilder, ReplBlockResult, Utf8PathBuf};
fn main() -> ReplBlockResult<()> {
let mut evaluator = /* initialize your evaluator */;
let path = Utf8PathBuf::try_from(env::current_dir()?)?.join(".repl.history");
ReplBuilder::default()
// Explicitly register .repl.history as the history file:
.history_filepath(path)
// Register the evaluator; the default evaluator fn is NOP
.evaluator(|query: &str| {
match evaluator.evaluate(query) {
Ok(value) => println!("{value}"),
Err(err) => println!("{err}"),
}
Ok(())
})
.build()? // Use `self` to build a REPL
.start()?;
Ok(())
}