add mlua
This commit is contained in:
48
__lang/mlua-test/src/main.rs
Normal file
48
__lang/mlua-test/src/main.rs
Normal file
@@ -0,0 +1,48 @@
|
||||
use mlua::{Error, Lua, MultiValue};
|
||||
use rustyline::DefaultEditor;
|
||||
|
||||
fn main() {
|
||||
let lua = Lua::new();
|
||||
let mut editor = DefaultEditor::new().expect("Failed to create editor");
|
||||
|
||||
loop {
|
||||
let mut prompt = "> ";
|
||||
let mut line = String::new();
|
||||
|
||||
loop {
|
||||
match editor.readline(prompt) {
|
||||
Ok(input) => line.push_str(&input),
|
||||
Err(_) => return,
|
||||
}
|
||||
|
||||
match lua.load(&line).eval::<MultiValue>() {
|
||||
Ok(values) => {
|
||||
editor.add_history_entry(line).unwrap();
|
||||
if values.len() > 0 {
|
||||
println!(
|
||||
"{}",
|
||||
values
|
||||
.iter()
|
||||
.map(|value| format!("{:#?}", value))
|
||||
.collect::<Vec<_>>()
|
||||
.join("\t")
|
||||
);
|
||||
}
|
||||
break;
|
||||
}
|
||||
Err(Error::SyntaxError {
|
||||
incomplete_input: true,
|
||||
..
|
||||
}) => {
|
||||
// continue reading input and append it to `line`
|
||||
line.push_str("\n"); // separate input lines
|
||||
prompt = ">> ";
|
||||
}
|
||||
Err(e) => {
|
||||
eprintln!("error: {}", e);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user