[][src]Struct actix_lua::dev::rlua::prelude::LuaThread

pub struct LuaThread<'lua>(_);

Handle to an internal Lua thread (or coroutine).

Methods

impl<'lua> Thread<'lua>[src]

pub fn resume<A, R>(&self, args: A) -> Result<R, Error> where
    A: ToLuaMulti<'lua>,
    R: FromLuaMulti<'lua>, 
[src]

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 returns 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),
}

pub fn status(&self) -> ThreadStatus[src]

Gets the status of the thread.

Trait Implementations

impl<'lua> ToLua<'lua> for Thread<'lua>[src]

impl<'lua> FromLua<'lua> for Thread<'lua>[src]

impl<'lua> Debug for Thread<'lua>[src]

impl<'lua> Clone for Thread<'lua>[src]

fn clone_from(&mut self, source: &Self)
1.0.0
[src]

Performs copy-assignment from source. Read more

Auto Trait Implementations

impl<'lua> !Send for Thread<'lua>

impl<'lua> !Sync for Thread<'lua>

Blanket Implementations

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

impl<T> From for T[src]

impl<T, U> TryFrom for T where
    U: Into<T>, 
[src]

type Error = !

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T> Erased for T

impl<'lua, T> FromLua for T where
    T: 'static + UserData + Clone
[src]

impl<'lua, T> ToLuaMulti for T where
    T: ToLua<'lua>, 
[src]

impl<'lua, T> FromLuaMulti for T where
    T: FromLua<'lua>, 
[src]

impl<'lua, T> ToLua for T where
    T: 'static + UserData + Send
[src]