Crate deno_bindgen

source ·
Expand description

deno_bindgen

This tool aims to simply types & glue code generation for FFI libraries written in Rust.

Usage

Add serde and deno_bindgen dependency to your crate.

use deno_bindgen::deno_bindgen;

#[deno_bindgen]
pub struct Input {
  /// Doc comments are transformed into
  /// jsdocs.
  a: Vec<Vec<String>>,
}

#[deno_bindgen(non_blocking)]
pub fn say_hello(message: &str) {
  println!("{}", message);
}

Generated bindings will look like this:

// bindings/binding.ts

// ... <init code here>

type Input = {
  /**
   * Doc comments are transformed into
   * jsdocs.
   **/
  a: Array<Array<string>>;
};

export async function say_hello(message: string) {
  // ... <glue code for symbol here>
}

These bindings contain nessecary code to open the shared library, define symbols and expose type definitions. They can be simply imported into Deno code:

import { say_hello } from "./bindings/bindings.ts";
await say_hello("Demn!")

Re-exports

Attribute Macros