Skip to content

Commit 665cfaf

Browse files
committed
fixing cyclic dependency problem
1 parent f92c46f commit 665cfaf

File tree

8 files changed

+594
-94
lines changed

8 files changed

+594
-94
lines changed

module/core/test_tools/Cargo.toml

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,7 @@ all-features = false
2929
[features]
3030
default = [
3131
"enabled",
32-
"error_typed",
33-
"error_untyped",
32+
# "standalone",
3433
]
3534
full = [ "default" ]
3635
no_std = [
@@ -66,6 +65,8 @@ enabled = [
6665
]
6766
# nightly = [ "typing_tools/nightly" ]
6867

68+
standalone = [ "standalone_error_tools" ]
69+
standalone_error_tools = [ "dep:anyhow", "dep:thiserror", "error_typed", "error_untyped" ]
6970
error_typed = []
7071
error_untyped = []
7172

@@ -81,11 +82,10 @@ rand = "0.8.5"
8182

8283
## internal
8384

84-
# error_tools = { workspace = true, features = [ "full" ] }
85+
error_tools = { workspace = true, features = [ "full" ] }
8586
meta_tools = { workspace = true, features = [ "full" ] }
8687
mem_tools = { workspace = true, features = [ "full" ] }
8788
typing_tools = { workspace = true, features = [ "full" ] }
88-
data_type = { workspace = true, features = [ "full" ] }
8989
diagnostics_tools = { workspace = true, features = [ "full" ] }
9090
process_tools = { workspace = true, features = [ "full" ] }
9191
collection_tools = { workspace = true, features = [ "full" ] }
@@ -94,8 +94,9 @@ collection_tools = { workspace = true, features = [ "full" ] }
9494

9595
## transient
9696

97-
anyhow = { workspace = true }
98-
thiserror = { workspace = true }
97+
# # error_tools
98+
anyhow = { workspace = true, optional = true }
99+
thiserror = { workspace = true, optional = true }
99100

100101
[build-dependencies]
101102
rustc_version = "0.4"

module/core/test_tools/src/lib.rs

Lines changed: 156 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -21,70 +21,159 @@ pub mod dependency
2121

2222
// #[ doc( inline ) ]
2323
// pub use ::error_tools;
24-
#[ doc( inline ) ]
25-
pub use ::meta_tools;
26-
#[ doc( inline ) ]
27-
pub use ::mem_tools;
28-
#[ doc( inline ) ]
29-
pub use ::typing_tools;
30-
#[ doc( inline ) ]
31-
pub use ::num_traits;
32-
#[ doc( inline ) ]
33-
pub use ::diagnostics_tools;
34-
35-
#[ doc( inline ) ]
36-
pub use ::process_tools;
24+
// #[ doc( inline ) ]
25+
// pub use ::meta_tools;
26+
// #[ doc( inline ) ]
27+
// pub use ::mem_tools;
28+
// #[ doc( inline ) ]
29+
// pub use ::typing_tools;
30+
// #[ doc( inline ) ]
31+
// pub use ::num_traits;
32+
// #[ doc( inline ) ]
33+
// pub use ::diagnostics_tools;
34+
//
35+
// #[ doc( inline ) ]
36+
// pub use ::process_tools;
3737

3838
// #[ doc( inline ) ]
3939
// #[ allow( unused_imports ) ]
4040
// pub use ::process_tools as process_tools;
4141

4242
}
4343

44+
mod private {}
45+
46+
//
47+
48+
// #[ cfg( feature = "enabled" ) ]
49+
// // #[ cfg( not( feature = "no_std" ) ) ]
50+
// ::meta_tools::mod_interface!
51+
// {
52+
// // #![ debug ]
53+
//
54+
// own use super::dependency::*;
55+
//
56+
// layer test;
57+
//
58+
// // xxx : comment out
59+
// use super::exposed::meta;
60+
// use super::exposed::mem;
61+
// use super::exposed::typing;
62+
// use super::exposed::dt;
63+
// use super::exposed::diagnostics;
64+
// use super::exposed::collection;
65+
// // use super::exposed::process;
66+
//
67+
// // prelude use ::rustversion::{ nightly, stable };
68+
//
69+
// // // xxx : eliminate need to do such things, putting itself to proper category
70+
// // exposed use super::test::compiletime;
71+
// // exposed use super::test::helper;
72+
// // exposed use super::test::smoke_test;
73+
//
74+
// prelude use ::meta_tools as meta;
75+
// prelude use ::mem_tools as mem;
76+
// prelude use ::typing_tools as typing;
77+
// prelude use ::data_type as dt;
78+
// prelude use ::diagnostics_tools as diagnostics;
79+
// prelude use ::collection_tools as collection;
80+
// // prelude use ::process_tools as process;
81+
//
82+
// use ::collection_tools; // xxx : do that for all dependencies
83+
//
84+
// prelude use ::meta_tools::
85+
// {
86+
// impls,
87+
// index,
88+
// tests_impls,
89+
// tests_impls_optional,
90+
// tests_index,
91+
// };
92+
//
93+
// prelude use ::typing_tools::{ implements };
94+
//
95+
// }
96+
97+
// xxx : use module namespaces
98+
// #[ cfg( feature = "enabled" ) ]
99+
// #[ cfg( not( feature = "no_std" ) ) ]
100+
// pub use test::{ compiletime, helper, smoke_test };
101+
102+
#[ cfg( feature = "enabled" ) ]
103+
pub mod test;
104+
105+
#[ cfg( feature = "standalone" ) ]
44106
#[ path = "../../../core/error_tools/src/error/mod.rs" ]
45107
pub mod error_tools;
46108

47-
mod private {}
109+
#[ cfg( feature = "enabled" ) ]
110+
#[ doc( inline ) ]
111+
#[ allow( unused_imports ) ]
112+
pub use own::*;
48113

49-
//
114+
/// Own namespace of the module.
115+
#[ cfg( feature = "enabled" ) ]
116+
#[ allow( unused_imports ) ]
117+
pub mod own
118+
{
119+
use super::*;
120+
121+
#[ doc( inline ) ]
122+
pub use test::own::*;
123+
124+
#[ doc( inline ) ]
125+
pub use
126+
{
127+
error_tools::orphan::*,
128+
// meta_tools::orphan::*,
129+
mem_tools::orphan::*,
130+
typing_tools::orphan::*,
131+
diagnostics_tools::orphan::*,
132+
collection_tools::orphan::*,
133+
};
50134

135+
}
136+
137+
/// Shared with parent namespace of the module
51138
#[ cfg( feature = "enabled" ) ]
52-
// #[ cfg( not( feature = "no_std" ) ) ]
53-
::meta_tools::mod_interface!
139+
#[ allow( unused_imports ) ]
140+
pub mod orphan
54141
{
55-
// #![ debug ]
142+
use super::*;
56143

57-
own use super::dependency::*;
144+
#[ doc( inline ) ]
145+
pub use exposed::*;
58146

59-
layer test;
147+
#[ doc( inline ) ]
148+
pub use test::orphan::*;
60149

61-
// xxx : comment out
62-
use super::exposed::meta;
63-
use super::exposed::mem;
64-
use super::exposed::typing;
65-
use super::exposed::dt;
66-
use super::exposed::diagnostics;
67-
use super::exposed::collection;
68-
// use super::exposed::process;
150+
}
69151

70-
// prelude use ::rustversion::{ nightly, stable };
152+
/// Exposed namespace of the module.
153+
#[ cfg( feature = "enabled" ) ]
154+
#[ allow( unused_imports ) ]
155+
pub mod exposed
156+
{
157+
use super::*;
71158

72-
// // xxx : eliminate need to do such things, putting itself to proper category
73-
// exposed use super::test::compiletime;
74-
// exposed use super::test::helper;
75-
// exposed use super::test::smoke_test;
159+
#[ doc( inline ) ]
160+
pub use prelude::*;
76161

77-
prelude use ::meta_tools as meta;
78-
prelude use ::mem_tools as mem;
79-
prelude use ::typing_tools as typing;
80-
prelude use ::data_type as dt;
81-
prelude use ::diagnostics_tools as diagnostics;
82-
prelude use ::collection_tools as collection;
83-
// prelude use ::process_tools as process;
162+
#[ doc( inline ) ]
163+
pub use test::exposed::*;
84164

85-
use ::collection_tools; // xxx : do that for all dependencies
165+
#[ doc( inline ) ]
166+
pub use
167+
{
168+
error_tools::exposed::*,
169+
// meta_tools::exposed::*,
170+
mem_tools::exposed::*,
171+
typing_tools::exposed::*,
172+
diagnostics_tools::exposed::*,
173+
collection_tools::exposed::*,
174+
};
86175

87-
prelude use ::meta_tools::
176+
pub use meta_tools::
88177
{
89178
impls,
90179
index,
@@ -93,11 +182,31 @@ mod private {}
93182
tests_index,
94183
};
95184

96-
prelude use ::typing_tools::{ implements };
185+
}
186+
187+
/// Prelude to use essentials: `use my_module::prelude::*`.
188+
#[ cfg( feature = "enabled" ) ]
189+
#[ allow( unused_imports ) ]
190+
pub mod prelude
191+
{
192+
use super::*;
193+
194+
#[ doc( inline ) ]
195+
pub use test::prelude::*;
196+
197+
#[ doc( inline ) ]
198+
pub use
199+
{
200+
error_tools::prelude::*,
201+
// meta_tools::prelude::*,
202+
mem_tools::prelude::*,
203+
typing_tools::prelude::*,
204+
diagnostics_tools::prelude::*,
205+
collection_tools::prelude::*,
206+
};
97207

98208
}
99209

100-
// xxx : use module namespaces
101-
// #[ cfg( feature = "enabled" ) ]
102-
// #[ cfg( not( feature = "no_std" ) ) ]
103-
// pub use test::{ compiletime, helper, smoke_test };
210+
// use test::prelude::hmap as xxx;
211+
// use prelude::hmap as xxx;
212+
// use meta_tools::prelude::hmap as xxx;

module/core/test_tools/src/test/asset.rs

Lines changed: 64 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,73 @@ mod private
3434
}
3535

3636

37+
// //
38+
// // #[ cfg( not( feature = "no_std" ) ) ]
39+
// crate::mod_interface!
40+
// {
3741
//
38-
// #[ cfg( not( feature = "no_std" ) ) ]
39-
crate::mod_interface!
42+
// // exposed use super;
43+
// exposed use super::super::asset;
44+
//
45+
// // own use path_to_exe;
46+
//
47+
// }
48+
49+
#[ doc( inline ) ]
50+
#[ allow( unused_imports ) ]
51+
pub use own::*;
52+
53+
/// Own namespace of the module.
54+
#[ allow( unused_imports ) ]
55+
pub mod own
4056
{
57+
use super::*;
58+
59+
#[ doc( inline ) ]
60+
pub use
61+
{
62+
};
63+
64+
}
65+
66+
/// Shared with parent namespace of the module
67+
#[ allow( unused_imports ) ]
68+
pub mod orphan
69+
{
70+
use super::*;
71+
72+
#[ doc( inline ) ]
73+
pub use exposed::*;
4174

42-
// exposed use super;
43-
exposed use super::super::asset;
75+
pub use super::super::asset;
76+
77+
}
78+
79+
/// Exposed namespace of the module.
80+
#[ allow( unused_imports ) ]
81+
pub mod exposed
82+
{
83+
use super::*;
84+
85+
#[ doc( inline ) ]
86+
pub use prelude::*;
87+
88+
#[ doc( inline ) ]
89+
pub use
90+
{
91+
};
92+
93+
}
94+
95+
/// Prelude to use essentials: `use my_module::prelude::*`.
96+
#[ allow( unused_imports ) ]
97+
pub mod prelude
98+
{
99+
use super::*;
44100

45-
// own use path_to_exe;
101+
#[ doc( inline ) ]
102+
pub use
103+
{
104+
};
46105

47106
}

0 commit comments

Comments
 (0)