error_tree/
from_impl_generation_config.rs1crate::ix!();
2
3#[derive(Debug,Clone)]
4pub struct FromImplGenerationConfig {
5 conversion_chain: ConversionChain,
6}
7
8impl From<ConversionChain> for FromImplGenerationConfig {
9
10 fn from(conversion_chain: ConversionChain
11
12 ) -> Self {
13
14 Self {
15 conversion_chain,
16 }
17 }
18}
19
20impl ToTokens for FromImplGenerationConfig {
21
22 fn to_tokens(&self, tokens: &mut TokenStream2) {
23
24 let from_src = self.conversion_chain.source().expect("expected non null ConversionChain");
25 let from_dst = self.conversion_chain.destination().expect("expected non null ConversionChain");
26
27 let conversion_chain_tokens = self.conversion_chain.clone().into_token_stream();
28
29 tokens.extend(
30 quote! {
31 impl From<#from_src> for #from_dst {
32 fn from(x: #from_src) -> Self {
33 #conversion_chain_tokens
34 }
35 }
36 }
37 );
38 }
39}
40
41impl From<&ErrorTree> for Vec<FromImplGenerationConfig> {
42
43 fn from(tree: &ErrorTree) -> Vec<FromImplGenerationConfig> {
44
45 let mut emitter = FromImplGenerationConfigEmitter::new(tree);
46
47 for e in &tree.enums {
48 emitter.visit_error_enum(e);
49 }
50
51 emitter.emit()
52 }
53}