1pub(crate) mod ordering {
2 use core::cmp::Ordering;
3
4 use serde::{Deserialize, Deserializer, Serializer};
5
6 pub(crate) fn deserialize<'de, D>(deserializer: D) -> Result<Ordering, D::Error>
7 where
8 D: Deserializer<'de>,
9 {
10 match i8::deserialize(deserializer)? {
11 -1 => Ok(Ordering::Less),
12 0 => Ok(Ordering::Equal),
13 1 => Ok(Ordering::Greater),
14 _ => Err(serde::de::Error::custom("invalid ordering")),
15 }
16 }
17
18 pub(crate) fn serialize<S>(ordering: &Ordering, serializer: S) -> Result<S::Ok, S::Error>
19 where
20 S: Serializer,
21 {
22 match ordering {
23 Ordering::Less => serializer.serialize_i8(-1),
24 Ordering::Equal => serializer.serialize_i8(0),
25 Ordering::Greater => serializer.serialize_i8(1),
26 }
27 }
28}