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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
// //!
// //! Analyze generic to provide more information than trivial syntax node.
// //!
//
// // zzz : qqq : clean
//
// /// Internal namespace.
// pub( crate ) mod private
// {
//
// /// Result of generics analyze.
// #[ derive( Debug ) ]
// pub struct GenericsAnalysis
// {
// /// Original generics.
// pub generics : syn::Generics,
// /// Array of names.
// pub names : Vec< syn::Ident >,
// }
//
// /// To analyze generics.
// pub trait GenericsAnalyze
// {
//
// /// Analyze generic.
// fn generics_analyze( &self ) -> GenericsAnalysis;
//
// }
//
// impl GenericsAnalyze for syn::ItemTrait
// {
// fn generics_analyze( &self ) -> GenericsAnalysis
// {
// let mut names = vec![];
// let generics = self.generics.clone();
//
// for param in &generics.params
// {
// match param
// {
// syn::GenericParam::Type( type_param ) => names.push( type_param.ident.clone() ),
// syn::GenericParam::Lifetime( lifetime_def ) => names.push( lifetime_def.lifetime.ident.clone() ),
// syn::GenericParam::Const( const_param ) => names.push( const_param.ident.clone() ),
// }
// }
//
// GenericsAnalysis
// {
// generics,
// names,
// }
// }
// }
//
// }
//
// #[ doc( inline ) ]
// #[ allow( unused_imports ) ]
// pub use protected::*;
//
// /// Protected namespace of the module.
// pub mod protected
// {
// #[ doc( inline ) ]
// #[ allow( unused_imports ) ]
// pub use super::orphan::*;
// }
//
// /// Orphan namespace of the module.
// pub mod orphan
// {
// #[ doc( inline ) ]
// #[ allow( unused_imports ) ]
// pub use super::exposed::*;
// }
//
// /// Exposed namespace of the module.
// pub mod exposed
// {
// #[ doc( inline ) ]
// #[ allow( unused_imports ) ]
// pub use super::
// {
// prelude::*,
// private::GenericsAnalysis,
// };
// pub use super::protected as generic_analyze;
// }
//
// /// Prelude to use essentials: `use my_module::prelude::*`.
// pub mod prelude
// {
// #[ doc( inline ) ]
// #[ allow( unused_imports ) ]
// pub use super::
// {
// private::GenericsAnalyze,
// };
// }