Macro ts_rs::export[][src]

macro_rules! export {
    ($($(($decl : ident)) ? $($p : path), + => $l : literal), * $(,) ?) => { ... };
}
Expand description

Expands to a test function which exports typescript bindings to one or multiple files when running cargo test.
If a type depends on an other type which is exported to a different file, an appropriate import will be included.
If a file already exists, it will be overriden.
Missing parent directories of the file(s) will be created.
Paths are interpreted as being relative to the project root.

#[derive(TS)] struct A;
#[derive(TS)] struct B;
#[derive(TS)] struct C;

export! {
    A, B => "bindings/a.ts",
    C => "bindings/b.ts"
}

When running cargo test, bindings for A, B and C will be exported to bindings/a.ts and bindings/b.ts.

By default, export! always uses export type/interface. If you wish, you can also use ambient declarations (declare type/interface):

#[derive(TS)] struct Declared;
#[derive(TS)] struct Normal(Declared);

export! {
    (declare) Declared => "bindings/declared.d.ts",
    Normal => "bindings/normal.ts"
}

Since Declared is now an ambient declaration, bindings/normal.ts will not include an import for bindings/declared.d.ts.