diff --git a/src/thread.rs b/src/thread.rs index 0894065..9294ffc 100644 --- a/src/thread.rs +++ b/src/thread.rs @@ -461,24 +461,29 @@ fn is_poll_pending(val: &MultiValue) -> bool { } #[cfg(feature = "async")] -struct WakerGuard<'lua> { +struct WakerGuard<'lua, 'a> { lua: &'lua Lua, prev: NonNull, + _phantom: PhantomData<&'a ()>, } #[cfg(feature = "async")] -impl<'lua> WakerGuard<'lua> { +impl<'lua, 'a> WakerGuard<'lua, 'a> { #[inline] - pub fn new(lua: &'lua Lua, waker: &Waker) -> Result> { + pub fn new(lua: &'lua Lua, waker: &'a Waker) -> Result> { unsafe { let prev = lua.set_waker(NonNull::from(waker)); - Ok(WakerGuard { lua, prev }) + Ok(WakerGuard { + lua, + prev, + _phantom: PhantomData, + }) } } } #[cfg(feature = "async")] -impl<'lua> Drop for WakerGuard<'lua> { +impl<'lua, 'a> Drop for WakerGuard<'lua, 'a> { fn drop(&mut self) { unsafe { self.lua.set_waker(self.prev);