ethbind_rust/
token_stream.rs

1use ethbind_gen::Contract;
2use proc_macro2::TokenStream;
3
4pub trait ToTokenStream {
5    fn to_token_streams(&self) -> anyhow::Result<Vec<TokenStream>>;
6}
7
8impl ToTokenStream for Vec<Contract> {
9    fn to_token_streams(&self) -> anyhow::Result<Vec<TokenStream>> {
10        let mut streams = vec![];
11        for c in self {
12            streams.append(&mut c.to_token_streams()?);
13        }
14
15        Ok(streams)
16    }
17}
18
19impl ToTokenStream for Contract {
20    fn to_token_streams(&self) -> anyhow::Result<Vec<TokenStream>> {
21        let mut streams = vec![];
22
23        for file in &self.files {
24            let token_stream: TokenStream = file
25                .data
26                .parse()
27                .map_err(|error| anyhow::format_err!("{}", error))?;
28
29            streams.push(token_stream);
30        }
31
32        Ok(streams)
33    }
34}