Skip to content

Commit 24afc7a

Browse files
committed
remove redundant stuff
1 parent 2102aa1 commit 24afc7a

File tree

1 file changed

+23
-44
lines changed
  • rust/functora-tagged/src

1 file changed

+23
-44
lines changed

rust/functora-tagged/src/lib.rs

Lines changed: 23 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,11 @@ use std::str::FromStr;
44
use 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

119
pub 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)
2120
where
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,
@@ -72,12 +59,9 @@ where
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
10993
use 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

Comments
 (0)