pub struct Thread<'lua>(_);
Expand description
Handle to an internal Lua thread (or coroutine).
Implementations
sourceimpl<'lua> Thread<'lua>
impl<'lua> Thread<'lua>
sourcepub fn resume<A, R>(&self, args: A) -> Result<R> where
A: ToLuaMulti<'lua>,
R: FromLuaMulti<'lua>,
pub fn resume<A, R>(&self, args: A) -> Result<R> where
A: ToLuaMulti<'lua>,
R: FromLuaMulti<'lua>,
Resumes execution of this thread.
Equivalent to coroutine.resume
.
Passes args
as arguments to the thread. If the coroutine has called coroutine.yield
, it
will return these arguments. Otherwise, the coroutine wasn’t yet started, so the arguments
are passed to its main function.
If the thread is no longer in Active
state (meaning it has finished execution or
encountered an error), this will return Err(CoroutineInactive)
, otherwise will return Ok
as follows:
If the thread calls coroutine.yield
, returns the values passed to yield
. If the thread
return
s values from its main function, returns those.
Examples
let thread: Thread = lua_context.load(r#"
coroutine.create(function(arg)
assert(arg == 42)
local yieldarg = coroutine.yield(123)
assert(yieldarg == 43)
return 987
end)
"#).eval().unwrap();
assert_eq!(thread.resume::<_, u32>(42).unwrap(), 123);
assert_eq!(thread.resume::<_, u32>(43).unwrap(), 987);
// The coroutine has now returned, so `resume` will fail
match thread.resume::<_, u32>(()) {
Err(Error::CoroutineInactive) => {},
unexpected => panic!("unexpected result {:?}", unexpected),
}
sourcepub fn status(&self) -> ThreadStatus
pub fn status(&self) -> ThreadStatus
Gets the status of the thread.
Trait Implementations
Auto Trait Implementations
impl<'lua> !RefUnwindSafe for Thread<'lua>
impl<'lua> !Send for Thread<'lua>
impl<'lua> !Sync for Thread<'lua>
impl<'lua> Unpin for Thread<'lua>
impl<'lua> !UnwindSafe for Thread<'lua>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcepub fn to_owned(&self) -> T
pub fn to_owned(&self) -> T
Creates owned data from borrowed data, usually by cloning. Read more
sourcepub fn clone_into(&self, target: &mut T)
pub fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more