rustscript-embedded 0.1.0

Embedded-facing RustScript runner examples with JIT disabled
Documentation
use std::io::{self, BufRead, Write};

use rustscript_embedded::{RunOutcome, eval_repl_entry, render_value};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    println!("RustScript embedded REPL (JIT off)");
    println!("commands: .help, .quit");

    let stdin = io::stdin();
    let mut input = stdin.lock();
    let mut line = String::new();

    loop {
        print!("rs-emb> ");
        io::stdout().flush()?;
        line.clear();
        if input.read_line(&mut line)? == 0 {
            println!();
            break;
        }

        let source = line.trim();
        match source {
            "" => continue,
            ".quit" | ".exit" => break,
            ".help" => {
                println!("enter RustScript statements, for example: print(1 + 2);");
                continue;
            }
            _ => {}
        }

        match eval_repl_entry(source)? {
            RunOutcome::Halted { stack } => {
                if let Some(value) = stack.last() {
                    println!("=> {}", render_value(value));
                } else {
                    println!("=> <empty>");
                }
            }
        }
    }

    Ok(())
}