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