1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
extern crate proc_macro;
use proc_macro::TokenStream;
use crate::defs::Definitions;
pub(crate) mod attrs;
pub(crate) mod codegen;
pub(crate) mod defs;
#[proc_macro]
pub fn define_slice_types_pair(input: TokenStream) -> TokenStream {
let file: syn::File =
syn::parse(input).unwrap_or_else(|e| panic!("Failed to parse input token stream: {}", e));
let defs = Definitions::from_file(file)
.unwrap_or_else(|e| panic!("Failed to load definitions: {}", e));
let output = defs.generate();
output.into()
}