Skip to main content

esexpr_derive/
lib.rs

1//! Derive macros for `ESExpr`
2
3use proc_macro::TokenStream;
4
5mod derive;
6mod literal;
7mod encoded_eq;
8mod flags;
9
10#[proc_macro_derive(ESExprCodec, attributes(esexpr))]
11/// Derive macro for `ESExprCodec`
12pub fn derive_esexpr_codec(input: TokenStream) -> TokenStream {
13	TokenStream::from(derive::derive_esexpr_codec_impl(proc_macro2::TokenStream::from(input)))
14}
15
16/// Derive macro for `ESExprEncodedEq`
17#[proc_macro_derive(ESExprEncodedEq)]
18pub fn derive_encoded_eq(input: TokenStream) -> TokenStream {
19	TokenStream::from(encoded_eq::derive_encoded_eq_impl(proc_macro2::TokenStream::from(input)))
20}
21
22#[proc_macro]
23/// Macro for `ESExpr` literal
24pub fn esexpr_literal(input: TokenStream) -> TokenStream {
25	TokenStream::from(literal::esexpr_literal_impl(proc_macro2::TokenStream::from(input)))
26}
27
28#[proc_macro]
29/// Macro for generating flags codec/types
30pub fn esexpr_flags(input: TokenStream) -> TokenStream {
31	TokenStream::from(flags::esexpr_flags_impl(proc_macro2::TokenStream::from(input)))
32}