M E T A C A L L

M E T A C A L L

A library for providing inter-language foreign function interface calls

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

MetaCall is a C plugin based library. This crate wraps the C library into Rust, so in order to make it work, you should install MetaCall binaries first (click here for additional info about the install script): sh bash <(curl -sL https://raw.githubusercontent.com/metacall/install/master/install.sh)

Example

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

main.rs ``` rust 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); }
}

} ```