Struct rustpython_vm::vm::Interpreter
source · pub struct Interpreter { /* private fields */ }
Expand description
The general interface for the VM
Examples
Runs a simple embedded hello world program.
use rustpython_vm::Interpreter;
use rustpython_vm::compiler::Mode;
Interpreter::without_stdlib(Default::default()).enter(|vm| {
let scope = vm.new_scope_with_builtins();
let source = r#"print("Hello World!")"#;
let code_obj = vm.compile(
source,
Mode::Exec,
"<embedded>".to_owned(),
).map_err(|err| vm.new_syntax_error(&err, Some(source))).unwrap();
vm.run_code_obj(code_obj, scope).unwrap();
});
Implementations§
source§impl Interpreter
impl Interpreter
sourcepub fn without_stdlib(settings: Settings) -> Self
pub fn without_stdlib(settings: Settings) -> Self
This is a bare unit to build up an interpreter without the standard library.
To create an interpreter with the standard library with the rustpython
crate, use rustpython::InterpreterConfig
.
To create an interpreter without the rustpython
crate, but only with rustpython-vm
,
try to build one from the source code of InterpreterConfig
. It will not be a one-liner but it also will not be too hard.
sourcepub fn with_init<F>(settings: Settings, init: F) -> Selfwhere
F: FnOnce(&mut VirtualMachine),
pub fn with_init<F>(settings: Settings, init: F) -> Selfwhere F: FnOnce(&mut VirtualMachine),
Create with initialize function taking mutable vm reference.
use rustpython_vm::Interpreter;
Interpreter::with_init(Default::default(), |vm| {
// put this line to add stdlib to the vm
// vm.add_native_modules(rustpython_stdlib::get_module_inits());
}).enter(|vm| {
vm.run_code_string(vm.new_scope_with_builtins(), "print(1)", "<...>".to_owned());
});
pub fn enter<F, R>(&self, f: F) -> Rwhere F: FnOnce(&VirtualMachine) -> R,
pub fn run<F, R>(self, f: F) -> u8where F: FnOnce(&VirtualMachine) -> PyResult<R>,
Auto Trait Implementations§
impl !RefUnwindSafe for Interpreter
impl !Send for Interpreter
impl !Sync for Interpreter
impl Unpin for Interpreter
impl !UnwindSafe for Interpreter
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