1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
use proc_macro::TokenStream;
use watt::WasmMacro;

static MACRO: WasmMacro = WasmMacro::new(WASM);
static WASM: &[u8] = include_bytes!("proto_import.wasm");

/// Import `prost` generated definitions.
///
/// # Examples
///
/// Given a .proto file with a package `foo.bar`, you would write
/// ```
/// # use proto_import::import;
///
/// import!(foo::bar);
/// ```
/// which will expand to:
/// ```
/// pub mod foo {
///     pub mod bar {
///         include!(concat!(env!("OUT_DIR"), "/foo.bar.rs"));
///     }
/// }
/// ```
#[proc_macro]
pub fn import(input: TokenStream) -> TokenStream {
    MACRO.proc_macro("import", input)
}