1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use crate::engine::ctx::State;
use crate::hlua::{self, AnyLuaValue};
use std::sync::Arc;


pub fn clear_err(lua: &mut hlua::Lua, state: Arc<dyn State>) {
    lua.set("clear_err", hlua::function0(move || {
        state.clear_error()
    }))
}

pub fn last_err(lua: &mut hlua::Lua, state: Arc<dyn State>) {
    lua.set("last_err", hlua::function0(move || -> AnyLuaValue {
        match state.last_error() {
            Some(err) => AnyLuaValue::LuaString(err),
            None => AnyLuaValue::LuaNil,
        }
    }))
}

pub fn set_err(lua: &mut hlua::Lua, state: Arc<dyn State>) {
    lua.set("set_err", hlua::function1(move |err: String| {
        state.set_error(failure::err_msg(err));
    }))
}