1#![doc = include_str!("../README.md")]
2#![doc(
3 html_logo_url = "https://raw.githubusercontent.com/alloy-rs/core/main/assets/alloy.jpg",
4 html_favicon_url = "https://raw.githubusercontent.com/alloy-rs/core/main/assets/favicon.ico"
5)]
6#![warn(missing_docs, unreachable_pub, rustdoc::all)]
7#![deny(unused_must_use, unused_crate_dependencies)]
8#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))]
9
10extern crate proc_macro;
11
12mod de;
13mod en;
14mod utils;
15
16use de::*;
17use en::*;
18use proc_macro::TokenStream;
19
20#[proc_macro_derive(RlpEncodable, attributes(rlp))]
23pub fn encodable(input: TokenStream) -> TokenStream {
24 syn::parse(input)
25 .and_then(|ast| impl_encodable(&ast))
26 .unwrap_or_else(|err| err.to_compile_error())
27 .into()
28}
29
30#[proc_macro_derive(RlpEncodableWrapper, attributes(rlp))]
33pub fn encodable_wrapper(input: TokenStream) -> TokenStream {
34 syn::parse(input)
35 .and_then(|ast| impl_encodable_wrapper(&ast))
36 .unwrap_or_else(|err| err.to_compile_error())
37 .into()
38}
39
40#[proc_macro_derive(RlpMaxEncodedLen, attributes(rlp))]
42pub fn max_encoded_len(input: TokenStream) -> TokenStream {
43 syn::parse(input)
44 .and_then(|ast| impl_max_encoded_len(&ast))
45 .unwrap_or_else(|err| err.to_compile_error())
46 .into()
47}
48
49#[proc_macro_derive(RlpDecodable, attributes(rlp))]
54pub fn decodable(input: TokenStream) -> TokenStream {
55 syn::parse(input)
56 .and_then(|ast| impl_decodable(&ast))
57 .unwrap_or_else(|err| err.to_compile_error())
58 .into()
59}
60
61#[proc_macro_derive(RlpDecodableWrapper, attributes(rlp))]
66pub fn decodable_wrapper(input: TokenStream) -> TokenStream {
67 syn::parse(input)
68 .and_then(|ast| impl_decodable_wrapper(&ast))
69 .unwrap_or_else(|err| err.to_compile_error())
70 .into()
71}