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 TypeScript code from Rust.
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)
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); }
}
}