derive_parse/
lib.rs

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}