1extern crate proc_macro;
2
3use derive_utils::quick_derive;
4use proc_macro::TokenStream;
5
6#[proc_macro_derive(Parser)]
7pub fn derive_parser(input: TokenStream) -> TokenStream {
8 quick_derive! {
9 input,
10 (wasm_reader_traits::Parser),
11 trait Parser {
12 type Item;
13 type Next;
14 type Error;
15
16 fn next<R: Read>(self, reader: &mut R) -> ParseResult<Self::Item, Self::Next, Self::Error>;
17 }
18 }
19}
20
21#[proc_macro_derive(IntoParser)]
22pub fn derive_intoparser(input: TokenStream) -> TokenStream {
23 quick_derive! {
24 input,
25 (wasm_reader_traits::IntoParser),
26 pub trait IntoParser {
27 type Item;
28 type Next;
29 type Error;
30 type Parser: Parser<Item = Self::Item, Next = Self::Next, Error = Self::Error>;
31
32 fn into(self) -> Self::Parser;
33 }
34 }
35}