mirror of https://codeberg.org/topola/topola.git
feat(t-rules::OrderedPair): get rid of unnecessary Clone bound on T for Serialize
This commit is contained in:
parent
c5a87d9bdf
commit
522355b16c
|
|
@ -12,13 +12,12 @@ use alloc::borrow::Cow;
|
||||||
use core::ops;
|
use core::ops;
|
||||||
|
|
||||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
||||||
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
|
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
|
||||||
#[cfg_attr(feature = "serde", serde(from = "(T, T)", into = "(T, T)"))]
|
#[cfg_attr(feature = "serde", serde(from = "(T, T)", into = "&(T, T)"))]
|
||||||
#[cfg_attr(
|
#[cfg_attr(
|
||||||
feature = "serde",
|
feature = "serde",
|
||||||
serde(bound(
|
serde(bound(
|
||||||
deserialize = "T: serde::Deserialize<'de> + Ord",
|
deserialize = "T: serde::Deserialize<'de> + Ord",
|
||||||
serialize = "T: serde::Serialize + Clone"
|
|
||||||
))
|
))
|
||||||
)]
|
)]
|
||||||
pub struct OrderedPair<T>(T, T);
|
pub struct OrderedPair<T>(T, T);
|
||||||
|
|
@ -49,6 +48,34 @@ impl<T> From<OrderedPair<T>> for (T, T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<'a, T> From<&'a OrderedPair<T>> for (&'a T, &'a T) {
|
||||||
|
#[inline(always)]
|
||||||
|
fn from(OrderedPair(a, b): &'a OrderedPair<T>) -> (&'a T, &'a T) {
|
||||||
|
(a, b)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "serde")]
|
||||||
|
impl<T: serde::Serialize> serde::Serialize for OrderedPair<T> {
|
||||||
|
#[inline]
|
||||||
|
fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
|
||||||
|
use serde::ser::SerializeTuple;
|
||||||
|
let mut tuple = match serializer.serialize_tuple(2) {
|
||||||
|
Ok(x) => x,
|
||||||
|
Err(e) => return Err(e),
|
||||||
|
};
|
||||||
|
match tuple.serialize_element(&self.0) {
|
||||||
|
Ok(x) => x,
|
||||||
|
Err(e) => return Err(e),
|
||||||
|
}
|
||||||
|
match tuple.serialize_element(&self.1) {
|
||||||
|
Ok(x) => x,
|
||||||
|
Err(e) => return Err(e),
|
||||||
|
}
|
||||||
|
tuple.end()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
||||||
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
|
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
|
||||||
pub struct Conditions<'a, K> {
|
pub struct Conditions<'a, K> {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue