summaryrefslogtreecommitdiff
path: root/mods/python-rust/src
diff options
context:
space:
mode:
Diffstat (limited to 'mods/python-rust/src')
-rw-r--r--mods/python-rust/src/lib.rs29
1 files changed, 29 insertions, 0 deletions
diff --git a/mods/python-rust/src/lib.rs b/mods/python-rust/src/lib.rs
new file mode 100644
index 000000000..c056c172f
--- /dev/null
+++ b/mods/python-rust/src/lib.rs
@@ -0,0 +1,29 @@
+use std::env;
+
+use rustpython::vm;
+
+fn main() {
+ let mut setting: vm::Settings = Default::default();
+ setting.path_list.push("".to_string());
+ let inter = vm::Interpreter::without_stdlib(setting);
+ let ret: vm::PyResult<()> = inter.enter(|vm| {
+ let scope = vm.new_scope_with_builtins();
+ let source = r#"print("Hello World from python!")"#;
+ let code_obj = vm
+ .compile(source, vm::compiler::Mode::Exec, "<embedded>".to_owned())
+ .map_err(|err| vm.new_syntax_error(&err, Some(source)))?;
+
+ vm.unwrap_pyresult(vm.run_code_obj(code_obj, scope));
+
+ Ok(())
+ });
+}
+
+#[no_mangle]
+pub fn fib(n: u32) -> u32 {
+ if n <= 1 {
+ main();
+ return n;
+ }
+ return fib(n - 1) + fib(n - 2);
+}