ethbind_rust/gen/
event.rs

1use ethbind_json::Parameter;
2use heck::ToSnakeCase;
3use proc_macro2::TokenStream;
4use quote::{format_ident, quote};
5
6use crate::RustGenerator;
7
8impl RustGenerator {
9    pub(crate) fn to_event_field_list<R: ethbind_gen::RuntimeBinder>(
10        &self,
11        runtime_binder: &mut R,
12        params: &[Parameter],
13    ) -> anyhow::Result<Vec<TokenStream>> {
14        let mut token_streams = vec![];
15
16        for (index, param) in params.iter().enumerate() {
17            let type_ident = self.to_rust_type(runtime_binder, param)?;
18
19            let var_ident = if param.name != "" {
20                format_ident!("{}", param.name.to_snake_case())
21            } else {
22                format_ident!("p{}", index)
23            };
24
25            token_streams.push(quote!(#var_ident: #type_ident));
26        }
27
28        Ok(token_streams)
29    }
30}