ethbind_rust/
token_stream.rs1use 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}