1pub(crate) mod ordering {
2 use core::cmp::Ordering;
3
4 use musli::{Context, Decoder, Encoder};
5
6 pub(crate) fn encode<E>(ordering: &Ordering, _: &E::Cx, encoder: E) -> Result<E::Ok, E::Error>
7 where
8 E: Encoder,
9 {
10 match ordering {
11 Ordering::Less => encoder.encode_i8(-1),
12 Ordering::Equal => encoder.encode_i8(0),
13 Ordering::Greater => encoder.encode_i8(1),
14 }
15 }
16
17 pub(crate) fn decode<'de, D>(cx: &D::Cx, decoder: D) -> Result<Ordering, D::Error>
18 where
19 D: Decoder<'de>,
20 {
21 match decoder.decode_i8()? {
22 -1 => Ok(Ordering::Less),
23 0 => Ok(Ordering::Equal),
24 1 => Ok(Ordering::Greater),
25 _ => Err(cx.message("invalid ordering")),
26 }
27 }
28}