Crates.io | metacall |
lib.rs | metacall |
version | 0.4.2 |
source | src |
created_at | 2020-10-23 10:02:53.333947 |
updated_at | 2024-09-25 20:17:54.532886 |
description | Call NodeJS, TypeScript, Python, C#, Ruby... functions from Rust (a Rust Port for MetaCall). |
homepage | |
repository | https://github.com/metacall/core/tree/develop/source/ports/rs_port |
max_upload_size | |
id | 304622 |
size | 368,454 |
M E T A C A L L
A library for providing inter-language foreign function interface calls
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.
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 installing it on other platforms):
curl -sL https://raw.githubusercontent.com/metacall/install/master/install.sh | sh
sum.ts
export function sum(a: number, b: number): number {
return a + b;
}
main.rs
use metacall::{switch, metacall, loaders};
fn main() {
// Initialize Metacall at the top
let _metacall = switch::initialize().unwrap();
// Load the file
loaders::from_single_file("ts", "sum.ts").unwrap();
// Call the sum function
let sum = metacall::<f64>("sum", [1.0, 2.0]).unwrap();
assert_eq!(sum, 3.0);
}