metacall 0.1.0

Call NodeJS, TypeScript, Python, C#, Ruby... functions from Rust (a Rust Port for MetaCall).
Documentation

Abstract

METACALL is a library that allows calling functions, methods or procedures between programming languages. With METACALL you can transparently execute code from / to any programming language, for example, call Python code from NodeJS.

Install

Install MetaCall binaries first (click here for additional info about the install script):

bash <(curl -sL https://raw.githubusercontent.com/metacall/install/master/install.sh)

Then install MetaCall Rust package through Cargo:

metacall cargo install metacall # Not implemented yet

Example

sum.ts

export function sum(a: number, b: number): number {
	return a + b;
}

main.rs

fn main() {
	let _d = defer(|| metacall::destroy());

	match metacall::initialize() {
		Err(e) => { println!("{}", e); panic!(); }, 
		_ => { println!("MetaCall initialized") }
	}

	let scripts : Vec<String> = vec!["sum.ts".to_string()];

	match metacall::load_from_file("ts".to_string(), scripts) {
		Err(e) => { println!("{}", e); panic!(); }, 
		_ => ()
	}

	match metacall::metacall("sum".to_string(),
							vec![
								metacall::Any::Double(1.0),
								metacall::Any::Double(2.0)
								])
	{
		Err(e) => { println!("{}", e); panic!(); }, 
		Ok(ret) => { println!("{:?}", ret); }
  }
}
metacall main.rs # Not implemented yet