@@ -8,92 +8,123 @@ pub use structdiff_derive::Difference;
88
99pub mod collections;
1010
11+ #[ cfg( all( feature = "nanoserde" , feature = "serde" , feature = "debug_diffs" ) ) ]
12+ pub ( crate ) mod __private {
13+ use super :: * ;
14+ pub trait StructDiffOwnedBound :
15+ SerBin + DeBin + Serialize + DeserializeOwned + Clone + std:: fmt:: Debug
16+ {
17+ }
18+ impl < T : SerBin + DeBin + Serialize + DeserializeOwned + Clone + std:: fmt:: Debug >
19+ StructDiffOwnedBound for T
20+ {
21+ }
22+
23+ pub trait StructDiffRefBound : SerBin + Serialize + Clone + std:: fmt:: Debug { }
24+ impl < T : SerBin + Serialize + Clone + std:: fmt:: Debug > StructDiffRefBound for T { }
25+ }
26+
27+ #[ cfg( all( feature = "nanoserde" , not( feature = "serde" ) , feature = "debug_diffs" ) ) ]
28+ pub ( crate ) mod __private {
29+ use super :: * ;
30+
31+ pub trait StructDiffOwnedBound : SerBin + DeBin + Clone + std:: fmt:: Debug { }
32+ impl < T : SerBin + DeBin + Clone + std:: fmt:: Debug > StructDiffOwnedBound for T { }
33+
34+ pub trait StructDiffRefBound : SerBin + Clone + std:: fmt:: Debug { }
35+ impl < T : SerBin + Clone + std:: fmt:: Debug > StructDiffRefBound for T { }
36+ }
37+
38+ #[ cfg( all( feature = "serde" , not( feature = "nanoserde" ) , feature = "debug_diffs" ) ) ]
39+ pub ( crate ) mod __private {
40+ use super :: * ;
41+
42+ pub trait StructDiffOwnedBound : Serialize + DeserializeOwned + Clone + std:: fmt:: Debug { }
43+ impl < T : Serialize + DeserializeOwned + Clone + std:: fmt:: Debug > StructDiffOwnedBound for T { }
44+
45+ pub trait StructDiffRefBound : Serialize + Clone + std:: fmt:: Debug { }
46+ impl < T : Serialize + Clone + std:: fmt:: Debug > StructDiffRefBound for T { }
47+ }
48+
49+ #[ cfg( all(
50+ not( feature = "serde" ) ,
51+ not( feature = "nanoserde" ) ,
52+ feature = "debug_diffs"
53+ ) ) ]
54+ pub ( crate ) mod __private {
55+ use super :: * ;
56+
57+ pub trait StructDiffOwnedBound : Clone + std:: fmt:: Debug { }
58+ impl < T : Clone + std:: fmt:: Debug > StructDiffOwnedBound for T { }
59+
60+ pub trait StructDiffRefBound : Clone + std:: fmt:: Debug { }
61+ impl < T : Clone + std:: fmt:: Debug > StructDiffRefBound for T { }
62+ }
63+
64+ #[ cfg( all( feature = "nanoserde" , feature = "serde" , not( feature = "debug_diffs" ) ) ) ]
65+ pub ( crate ) mod __private {
66+ use super :: * ;
67+ pub trait StructDiffOwnedBound : SerBin + DeBin + Serialize + DeserializeOwned + Clone { }
68+ impl < T : SerBin + DeBin + Serialize + DeserializeOwned + Clone > StructDiffOwnedBound for T { }
69+
70+ pub trait StructDiffRefBound : SerBin + Serialize + Clone { }
71+ impl < T : SerBin + Serialize + Clone > StructDiffRefBound for T { }
72+ }
73+
74+ #[ cfg( all(
75+ feature = "nanoserde" ,
76+ not( feature = "serde" ) ,
77+ not( feature = "debug_diffs" )
78+ ) ) ]
79+ pub ( crate ) mod __private {
80+ use super :: * ;
81+
82+ pub trait StructDiffOwnedBound : SerBin + DeBin + Clone { }
83+ impl < T : SerBin + DeBin + Clone > StructDiffOwnedBound for T { }
84+
85+ pub trait StructDiffRefBound : SerBin + Clone { }
86+ impl < T : SerBin + Clone > StructDiffRefBound for T { }
87+ }
88+
89+ #[ cfg( all(
90+ feature = "serde" ,
91+ not( feature = "nanoserde" ) ,
92+ not( feature = "debug_diffs" )
93+ ) ) ]
94+ pub ( crate ) mod __private {
95+ use super :: * ;
96+
97+ pub trait StructDiffOwnedBound : Serialize + DeserializeOwned + Clone { }
98+ impl < T : Serialize + DeserializeOwned + Clone > StructDiffOwnedBound for T { }
99+
100+ pub trait StructDiffRefBound : Serialize + Clone { }
101+ impl < T : Serialize + Clone > StructDiffRefBound for T { }
102+ }
103+
104+ #[ cfg( all(
105+ not( feature = "serde" ) ,
106+ not( feature = "nanoserde" ) ,
107+ not( feature = "debug_diffs" )
108+ ) ) ]
109+ pub ( crate ) mod __private {
110+
111+ pub trait StructDiffOwnedBound : Clone { }
112+ impl < T : Clone > StructDiffOwnedBound for T { }
113+
114+ pub trait StructDiffRefBound : Clone { }
115+ impl < T : Clone > StructDiffRefBound for T { }
116+ }
117+
11118pub trait StructDiff {
12119 /// A generated type used to represent the difference
13120 /// between two instances of a struct which implements
14121 /// the StructDiff trait.
15- #[ cfg( all( feature = "nanoserde" , feature = "serde" , feature = "debug_diffs" ) ) ]
16- type Diff : SerBin + DeBin + Serialize + DeserializeOwned + Clone + std:: fmt:: Debug ;
17- #[ cfg( all( feature = "nanoserde" , not( feature = "serde" ) , feature = "debug_diffs" ) ) ]
18- type Diff : SerBin + DeBin + Clone + std:: fmt:: Debug ;
19- #[ cfg( all( feature = "serde" , not( feature = "nanoserde" ) , feature = "debug_diffs" ) ) ]
20- type Diff : Serialize + DeserializeOwned + Clone + std:: fmt:: Debug ;
21- #[ cfg( all(
22- not( feature = "serde" ) ,
23- not( feature = "nanoserde" ) ,
24- feature = "debug_diffs"
25- ) ) ]
26- type Diff : Clone + std:: fmt:: Debug ;
27- #[ cfg( all( feature = "nanoserde" , feature = "serde" , not( feature = "debug_diffs" ) ) ) ]
28- type Diff : SerBin + DeBin + Serialize + DeserializeOwned + Clone ;
29- #[ cfg( all(
30- feature = "nanoserde" ,
31- not( feature = "serde" ) ,
32- not( feature = "debug_diffs" )
33- ) ) ]
34- type Diff : SerBin + DeBin + Clone ;
35- #[ cfg( all(
36- feature = "serde" ,
37- not( feature = "nanoserde" ) ,
38- not( feature = "debug_diffs" )
39- ) ) ]
40- type Diff : Serialize + DeserializeOwned + Clone ;
41- #[ cfg( all(
42- not( feature = "serde" ) ,
43- not( feature = "nanoserde" ) ,
44- not( feature = "debug_diffs" )
45- ) ) ]
46- type Diff : Clone ;
122+ type Diff : __private:: StructDiffOwnedBound ;
47123
48124 /// A generated type used to represent the difference
49125 /// between two instances of a struct which implements
50126 /// the StructDiff trait (using references).
51- #[ cfg( all( feature = "nanoserde" , feature = "serde" , feature = "debug_diffs" ) ) ]
52- type DiffRef < ' target > : SerBin + Serialize + Clone + std:: fmt:: Debug + Into < Self :: Diff >
53- where
54- Self : ' target ;
55- #[ cfg( all( feature = "nanoserde" , not( feature = "serde" ) , feature = "debug_diffs" ) ) ]
56- type DiffRef < ' target > : SerBin + Clone + std:: fmt:: Debug + Into < Self :: Diff >
57- where
58- Self : ' target ;
59- #[ cfg( all( feature = "serde" , not( feature = "nanoserde" ) , feature = "debug_diffs" ) ) ]
60- type DiffRef < ' target > : Serialize + Clone + std:: fmt:: Debug + Into < Self :: Diff >
61- where
62- Self : ' target ;
63- #[ cfg( all(
64- not( feature = "serde" ) ,
65- not( feature = "nanoserde" ) ,
66- feature = "debug_diffs"
67- ) ) ]
68- type DiffRef < ' target > : Clone + std:: fmt:: Debug + Into < Self :: Diff >
69- where
70- Self : ' target ;
71- #[ cfg( all( feature = "nanoserde" , feature = "serde" , not( feature = "debug_diffs" ) ) ) ]
72- type DiffRef < ' target > : SerBin + Serialize + Clone + Into < Self :: Diff >
73- where
74- Self : ' target ;
75- #[ cfg( all(
76- feature = "nanoserde" ,
77- not( feature = "serde" ) ,
78- not( feature = "debug_diffs" )
79- ) ) ]
80- type DiffRef < ' target > : SerBin + Clone + Into < Self :: Diff >
81- where
82- Self : ' target ;
83- #[ cfg( all(
84- feature = "serde" ,
85- not( feature = "nanoserde" ) ,
86- not( feature = "debug_diffs" )
87- ) ) ]
88- type DiffRef < ' target > : Serialize + Clone + Into < Self :: Diff >
89- where
90- Self : ' target ;
91- #[ cfg( all(
92- not( feature = "serde" ) ,
93- not( feature = "nanoserde" ) ,
94- not( feature = "debug_diffs" )
95- ) ) ]
96- type DiffRef < ' target > : Clone + Into < Self :: Diff >
127+ type DiffRef < ' target > : __private:: StructDiffRefBound + Into < Self :: Diff >
97128 where
98129 Self : ' target ;
99130
0 commit comments