@@ -8,92 +8,123 @@ pub use structdiff_derive::Difference;
8
8
9
9
pub mod collections;
10
10
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
+
11
118
pub trait StructDiff {
12
119
/// A generated type used to represent the difference
13
120
/// between two instances of a struct which implements
14
121
/// 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 ;
47
123
48
124
/// A generated type used to represent the difference
49
125
/// between two instances of a struct which implements
50
126
/// 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 >
97
128
where
98
129
Self : ' target ;
99
130
0 commit comments