@@ -4,12 +4,11 @@ use std::str::FromStr;
44use thiserror:: Error ;
55
66#[ derive( Debug ) ]
7- pub struct Tagged < Rep , Tag > ( Rep , PhantomData < Tag > )
8- where
9- Rep : Refine < Tag > ;
7+ pub struct Tagged < Rep , Tag > ( Rep , PhantomData < Tag > ) ;
108
119pub trait Refine < Tag > : Sized {
1210 type RefineErrorRep : Debug + Display ;
11+
1312 fn refine ( self ) -> Result < Self , Self :: RefineErrorRep > {
1413 Ok ( self )
1514 }
@@ -21,13 +20,13 @@ pub struct RefineError<Rep, Tag>(pub Rep::RefineErrorRep)
2120where
2221 Rep : Refine < Tag > ;
2322
24- impl < Rep , Tag > Tagged < Rep , Tag >
25- where
26- Rep : Refine < Tag > ,
27- {
23+ impl < Rep , Tag > Tagged < Rep , Tag > {
2824 pub fn new (
2925 rep : Rep ,
30- ) -> Result < Self , RefineError < Rep , Tag > > {
26+ ) -> Result < Self , RefineError < Rep , Tag > >
27+ where
28+ Rep : Refine < Tag > ,
29+ {
3130 rep. refine ( )
3231 . map ( |rep| Tagged ( rep, PhantomData ) )
3332 . map_err ( RefineError )
@@ -37,33 +36,21 @@ where
3736 }
3837}
3938
40- impl < Rep , Tag > Clone for Tagged < Rep , Tag >
41- where
42- Rep : Clone + Refine < Tag > ,
43- {
44- fn clone ( & self ) -> Self {
45- Tagged ( self . rep ( ) . clone ( ) , PhantomData )
46- }
47- }
39+ impl < Rep : Eq , Tag > Eq for Tagged < Rep , Tag > { }
4840
49- impl < Rep , Tag > PartialEq for Tagged < Rep , Tag >
50- where
51- Rep : PartialEq + Refine < Tag > ,
52- {
41+ impl < Rep : PartialEq , Tag > PartialEq for Tagged < Rep , Tag > {
5342 fn eq ( & self , other : & Self ) -> bool {
5443 self . rep ( ) == other. rep ( )
5544 }
5645}
5746
58- impl < Rep , Tag > Eq for Tagged < Rep , Tag > where
59- Rep : Eq + Refine < Tag >
60- {
47+ impl < Rep : Ord , Tag > Ord for Tagged < Rep , Tag > {
48+ fn cmp ( & self , other : & Self ) -> std:: cmp:: Ordering {
49+ self . rep ( ) . cmp ( other. rep ( ) )
50+ }
6151}
6252
63- impl < Rep , Tag > PartialOrd for Tagged < Rep , Tag >
64- where
65- Rep : PartialOrd + Refine < Tag > ,
66- {
53+ impl < Rep : PartialOrd , Tag > PartialOrd for Tagged < Rep , Tag > {
6754 fn partial_cmp (
6855 & self ,
6956 other : & Self ,
7259 }
7360}
7461
75- impl < Rep , Tag > Ord for Tagged < Rep , Tag >
76- where
77- Rep : Ord + Refine < Tag > ,
78- {
79- fn cmp ( & self , other : & Self ) -> std:: cmp:: Ordering {
80- self . rep ( ) . cmp ( other. rep ( ) )
62+ impl < Rep : Clone , Tag > Clone for Tagged < Rep , Tag > {
63+ fn clone ( & self ) -> Self {
64+ Tagged ( self . rep ( ) . clone ( ) , PhantomData )
8165 }
8266}
8367
@@ -109,10 +93,7 @@ where
10993use serde:: { Deserialize , Serialize } ;
11094
11195#[ cfg( feature = "serde" ) ]
112- impl < Rep , Tag > Serialize for Tagged < Rep , Tag >
113- where
114- Rep : Serialize + Refine < Tag > ,
115- {
96+ impl < Rep : Serialize , Tag > Serialize for Tagged < Rep , Tag > {
11697 fn serialize < S > (
11798 & self ,
11899 serializer : S ,
@@ -154,7 +135,7 @@ mod diesel_impl {
154135
155136 impl < Rep , Tag , ST > AsExpression < ST > for Tagged < Rep , Tag >
156137 where
157- Rep : Clone + Refine < Tag > + AsExpression < ST > ,
138+ Rep : Clone + AsExpression < ST > ,
158139 ST : SqlType + SingleValue ,
159140 {
160141 type Expression =
@@ -166,7 +147,7 @@ mod diesel_impl {
166147
167148 impl < Rep , Tag , ST > AsExpression < ST > for & Tagged < Rep , Tag >
168149 where
169- Rep : Clone + Refine < Tag > + AsExpression < ST > ,
150+ Rep : Clone + AsExpression < ST > ,
170151 ST : SqlType + SingleValue ,
171152 {
172153 type Expression =
@@ -178,7 +159,7 @@ mod diesel_impl {
178159
179160 impl < DB , Rep , Tag , ST > ToSql < ST , DB > for Tagged < Rep , Tag >
180161 where
181- Rep : Refine < Tag > + ToSql < ST , DB > ,
162+ Rep : ToSql < ST , DB > ,
182163 ST : SqlType + SingleValue ,
183164 DB : Backend ,
184165 Tag : Debug ,
@@ -193,7 +174,7 @@ mod diesel_impl {
193174
194175 impl < DB , Rep , Tag , ST > FromSql < ST , DB > for Tagged < Rep , Tag >
195176 where
196- Rep : Refine < Tag > + FromSql < ST , DB > ,
177+ Rep : FromSql < ST , DB > + Refine < Tag > ,
197178 ST : SqlType + SingleValue ,
198179 DB : Backend ,
199180 {
@@ -210,9 +191,7 @@ mod diesel_impl {
210191 impl < Rep , Tag , ST , DB > Queryable < ST , DB >
211192 for Tagged < Rep , Tag >
212193 where
213- Rep : Refine < Tag >
214- + FromSql < ST , DB >
215- + Queryable < ST , DB > ,
194+ Rep : Queryable < ST , DB > + Refine < Tag > ,
216195 ST : SqlType + SingleValue ,
217196 DB : Backend ,
218197 {
0 commit comments