pub struct Executor { /* private fields */ }Expand description
Lua execution engine.
Holds a shared VM for lightweight stateless operations (eval_simple)
and spawns per-session VMs for coroutine-based execution (start_session).
Per-session VMs eliminate global namespace pollution between concurrent
sessions — each session’s alc, ctx, and package.loaded are fully
isolated.
Implementations§
Source§impl Executor
impl Executor
pub async fn new(lib_paths: Vec<PathBuf>) -> Result<Self>
Sourcepub async fn eval_simple(&self, code: String) -> Result<Value, String>
pub async fn eval_simple(&self, code: String) -> Result<Value, String>
Evaluate Lua code without LLM bridge. For lightweight operations like reading package metadata.
Sourcepub async fn start_session(
&self,
code: String,
ctx: Value,
) -> Result<Session, String>
pub async fn start_session( &self, code: String, ctx: Value, ) -> Result<Session, String>
Start a new Lua execution session on a dedicated VM.
Each session gets its own Lua VM (OS thread + mlua instance) so concurrent sessions cannot interfere with each other’s globals. The VM is cleaned up automatically when the session completes or is abandoned (all senders drop → channel closes → thread exits).
Auto Trait Implementations§
impl Freeze for Executor
impl !RefUnwindSafe for Executor
impl Send for Executor
impl Sync for Executor
impl Unpin for Executor
impl UnsafeUnpin for Executor
impl !UnwindSafe for Executor
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more