Open b0bleet opened 11 months ago
It's not a bug, this is how Lua works. Async execution happens in coroutines, and each coroutine need to have their own hook. Setting it in main Lua thread would only update the main thread without affecting others.
The correct code for hooks in async context would be:
async fn main() -> Result<()> {
let lua = Lua::new();
let func = lua
.load(
r#"
local x = 2 + 3
local y = x * 63
local z = string.len(x..", "..y)
"#,
)
.into_function()?;
let thread = lua.create_thread(func)?;
thread.set_hook(HookTriggers::EVERY_LINE, move |_lua, _debug| {
println!("test hook 2");
Ok(())
});
let _: () = thread.into_async(()).await?;
lua.remove_hook();
Ok(())
}
set_hook doesn't work properly when executing Lua with exec_async()