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)
}