pub struct Context { /* private fields */ }
Expand description
Context used for the Rune language.
See Build::with_context.
At runtime this needs to be converted into a RuntimeContext when used with a Vm. This is done through Context::runtime.
A Context contains:
- Native functions.
- Native instance functions.
- And native type definitions.
Implementations§
source§impl Context
impl Context
sourcepub fn with_config(stdio: bool) -> Result<Self, ContextError>
pub fn with_config(stdio: bool) -> Result<Self, ContextError>
Construct a Context containing the default set of modules with the given configuration.
stdio
determines if we include I/O functions that interact with stdout
and stderr by default, like dbg
, print
, and println
. If this is
false
all the corresponding low-level I/O functions have to be
provided through a different module.
These are:
::std::io::dbg
::std::io::print
::std::io::println
sourcepub fn with_default_modules() -> Result<Self, ContextError>
pub fn with_default_modules() -> Result<Self, ContextError>
Construct a new collection of functions with default packages installed.
sourcepub fn runtime(&self) -> RuntimeContext
pub fn runtime(&self) -> RuntimeContext
Construct a runtime context used when executing the virtual machine.
This is not a cheap operation, since it requires cloning things out of the build-time Context which are necessary at runtime.
use rune::{Context, Vm, Unit};
use std::sync::Arc;
let context = Context::with_default_modules()?;
let runtime = Arc::new(context.runtime());
let unit = Arc::new(Unit::default());
let vm = Vm::new(runtime, unit);
sourcepub fn install<M>(&mut self, module: M) -> Result<(), ContextError>where
M: AsRef<Module>,
pub fn install<M>(&mut self, module: M) -> Result<(), ContextError>where M: AsRef<Module>,
Install the specified module.
This installs everything that has been declared in the given Module and ensures that they are compatible with the overall context, like ensuring that a given type is only declared once.
sourcepub fn iter_functions(&self) -> impl Iterator<Item = (Hash, &ContextSignature)>
pub fn iter_functions(&self) -> impl Iterator<Item = (Hash, &ContextSignature)>
Iterate over all available functions in the Context.
sourcepub fn iter_types(&self) -> impl Iterator<Item = (Hash, &ContextTypeInfo)>
pub fn iter_types(&self) -> impl Iterator<Item = (Hash, &ContextTypeInfo)>
Iterate over all available types in the Context.