inline-python 0.10.0

Inline Python code directly in your Rust code
Documentation
1
2
3
4
5
6
7
8
9
10
11
use crate::Context;
use pyo3::{ffi, types::PyAny, AsPyPointer, PyObject, PyResult, Python};

pub fn run_python_code<'p>(py: Python<'p>, context: &Context, bytecode: &[u8]) -> PyResult<&'p PyAny> {
	unsafe {
		let ptr = ffi::PyMarshal_ReadObjectFromString(bytecode.as_ptr() as *const _, bytecode.len() as isize);
		let code = PyObject::from_owned_ptr_or_err(py, ptr)?;
		let result = ffi::PyEval_EvalCode(code.as_ptr(), context.globals.as_ptr(), std::ptr::null_mut());
		py.from_owned_ptr_or_err(result)
	}
}