28 lines
716 B
Rust
28 lines
716 B
Rust
use mlua::{Error, Function, Lua, Result, Table};
|
|
use std::time::Duration;
|
|
use tokio::time::{sleep, timeout};
|
|
|
|
pub fn register_globals(lua: &Lua, globals: &Table) -> Result<()> {
|
|
globals.set(
|
|
"sleep",
|
|
lua.create_async_function(async |_, duration: u64| {
|
|
sleep(Duration::from_millis(duration)).await;
|
|
Ok(())
|
|
})?,
|
|
)?;
|
|
|
|
globals.set(
|
|
"timeout",
|
|
lua.create_async_function(async |_, (duration, function): (u64, Function)| {
|
|
timeout(
|
|
Duration::from_millis(duration),
|
|
function.call_async::<()>(()),
|
|
)
|
|
.await
|
|
.map_err(Error::external)
|
|
})?,
|
|
)?;
|
|
|
|
Ok(())
|
|
}
|