@@ -6,6 +6,7 @@ use internal_prelude::v1::*;
6
6
7
7
use super :: types_bits:: * ;
8
8
9
+
9
10
/// A bit-limited integer, stored in a native type that is at least
10
11
/// as many bits wide as the desired size.
11
12
#[ derive( Default , Debug , Copy , Clone ) ]
@@ -14,6 +15,24 @@ pub struct Integer<T, B> {
14
15
bits : PhantomData < B >
15
16
}
16
17
18
+ use serde:: ser:: { Serialize , Serializer } ;
19
+ impl < T , B > Serialize for Integer < T , B > where T : Serialize {
20
+ fn serialize < S > ( & self , serializer : S ) -> Result < S :: Ok , S :: Error >
21
+ where S : Serializer
22
+ {
23
+ self . num . serialize ( serializer)
24
+ }
25
+ }
26
+
27
+ use serde:: de:: { Deserialize , Deserializer } ;
28
+ impl < ' de , T , B > Deserialize < ' de > for Integer < T , B > where T : Deserialize < ' de > , T : Into < Integer < T , B > > {
29
+ fn deserialize < D > ( deserializer : D ) -> Result < Self , D :: Error >
30
+ where D : Deserializer < ' de >
31
+ {
32
+ <T >:: deserialize ( deserializer) . map ( |n| n. into ( ) )
33
+ }
34
+ }
35
+
17
36
impl < T , B > PartialEq for Integer < T , B > where T : PartialEq {
18
37
fn eq ( & self , other : & Self ) -> bool {
19
38
self . num . eq ( & other. num )
0 commit comments