Crate postcard_bindgen

source ·
Expand description

§Postcard Bindgen

This crate allows automatically generating javascript bindings to serialize javascript objects to postcard format and vice versa.

§Example

This example shows how to generate a npm package out of the rust structures. A new folder with the package name will be created. A javascript file and typescript typings as well as a package.json will be placed in it.

#[derive(Serialize, PostcardBindings)]
struct A(u8);

#[derive(Serialize, PostcardBindings)]
struct B {
    a: u8
}

#[derive(Serialize, PostcardBindings)]
enum C {
    A,
    B(u8),
    C(A, B),
    D { a: &'static str, b: B },
}

fn main() {
    build_npm_package(
        std::env::current_dir().unwrap().as_path(),
        PackageInfo {
            name: "test-bindings".into(),
            version: "0.1.0".try_into().unwrap(),
        },
        generate_bindings!(A, B, C),
    )
    .unwrap();
}
// JavaScript
import { serialize } form "test-bindings"

const c = {
    tag: "C",
    value: [
        123,
        {
            a: 234
        }
    ]
}

const bytes = serialize("C", c)

Macros§

  • Macro to generate javascript and typescript binding strings which can be exported into files.

Structs§

  • ExportStringsgenerating
    Helper struct to pass the generated language strings to an export function.
  • PackageInfogenerating
    Holds npm package info.
  • Versiongenerating
    Defines a package version with major, minor, patch version numbers.
  • Error type that indicates that the supplied string is not a version formatted string.

Functions§

  • Builds a npm package from create language binding strings.
  • export_bindingsgenerating
    Export the generated binding string to a file with passed file name at passed path.

Derive Macros§

  • Macro to annotate structs or enums for which bindings should be generated.