#repl #building #block #history #build #read-eval-print-loop #read-eval-print-loops

repl-block

一个基于 crossterm 构建读取-评估-打印循环 (REPL) 的库

11 个版本 (7 个重大更改)

新版本 0.10.0 2024 年 8 月 11 日
0.9.0 2024 年 6 月 5 日
0.8.0 2024 年 6 月 5 日

#17#building

MIT/Apache

65KB
1.5K SLoC

repl-block

crates.io Documentation Rust

概要

此包提供了一种简单易用的方式来构建 Read-Eval-Print-Loop,即 REPL。

用法

将此包作为依赖项添加到您的项目 Cargo.toml

[dependencies]
repl-block= "0.9.0"

然后可以使用 ReplBuilder 类型构建并启动一个 REPL,如下所示:

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(())
}

依赖关系

~6–17MB
~227K SLoC