From 1367a033d7e90705e17a6b771817b9982c78b348 Mon Sep 17 00:00:00 2001 From: Alex Orlenko Date: Wed, 21 Jun 2023 13:14:17 +0100 Subject: [PATCH] Don't clone function when doing call_async() --- src/lua.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/lua.rs b/src/lua.rs index 0f9194e..77d3a91 100644 --- a/src/lua.rs +++ b/src/lua.rs @@ -1628,6 +1628,13 @@ impl Lua { /// /// Equivalent to `coroutine.create`. pub fn create_thread<'lua>(&'lua self, func: Function) -> Result> { + self.create_thread_inner(&func) + } + + /// Wraps a Lua function into a new thread (or coroutine). + /// + /// Takes function by reference. + fn create_thread_inner<'lua>(&'lua self, func: &Function) -> Result> { let state = self.state(); unsafe { let _sg = StackGuard::new(state); @@ -1676,7 +1683,7 @@ impl Lua { return Ok(Thread(LuaRef::new(self, index))); } }; - self.create_thread(func.clone()) + self.create_thread_inner(func) } /// Resets thread (coroutine) and returns to the pool for later use.