1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
use crate::error::Error;
use serde::{de, ser};
use std::cmp;
use std::fmt;
use std::hash;
pub trait FloatRepr<T>:
self::private::Sealed<T>
+ Copy
+ Sized
+ fmt::Debug
+ ser::Serialize
+ cmp::Eq
+ cmp::Ord
+ hash::Hash
{
fn serialize(value: T) -> Result<Self, Error>;
fn visit<'de, V>(&self, visitor: V) -> Result<V::Value, Error>
where
V: de::Visitor<'de>;
}
mod private {
pub trait Sealed<A> {}
impl<T, A> Sealed<A> for T where T: super::FloatRepr<A> {}
}