@@ -2,17 +2,16 @@ use std::any::type_name;
2
2
use std:: cmp:: Ordering ;
3
3
use std:: fmt:: Debug ;
4
4
5
- use bincode:: { deserialize , serialize } ;
5
+ use bincode:: { Decode , Encode , decode_from_slice , encode_to_vec } ;
6
6
use redb:: { Database , Error , Key , Range , TableDefinition , TypeName , Value } ;
7
- use serde:: { Deserialize , Serialize , de:: DeserializeOwned } ;
8
7
9
- #[ derive( Debug , Serialize , Deserialize , PartialEq , Eq , PartialOrd , Ord ) ]
8
+ #[ derive( Debug , Decode , Encode , PartialEq , Eq , PartialOrd , Ord ) ]
10
9
struct SomeKey {
11
10
foo : String ,
12
11
bar : i32 ,
13
12
}
14
13
15
- #[ derive( Debug , Serialize , Deserialize , PartialEq ) ]
14
+ #[ derive( Debug , Decode , Encode , PartialEq ) ]
16
15
struct SomeValue {
17
16
foo : [ f64 ; 3 ] ,
18
17
bar : bool ,
@@ -64,7 +63,7 @@ pub struct Bincode<T>(pub T);
64
63
65
64
impl < T > Value for Bincode < T >
66
65
where
67
- T : Debug + Serialize + for < ' a > Deserialize < ' a > ,
66
+ T : Debug + Encode + Decode < ( ) > ,
68
67
{
69
68
type SelfType < ' a >
70
69
= T
@@ -84,15 +83,17 @@ where
84
83
where
85
84
Self : ' a ,
86
85
{
87
- deserialize ( data) . unwrap ( )
86
+ decode_from_slice ( data, bincode:: config:: standard ( ) )
87
+ . unwrap ( )
88
+ . 0
88
89
}
89
90
90
91
fn as_bytes < ' a , ' b : ' a > ( value : & ' a Self :: SelfType < ' b > ) -> Self :: AsBytes < ' a >
91
92
where
92
93
Self : ' a ,
93
94
Self : ' b ,
94
95
{
95
- serialize ( value) . unwrap ( )
96
+ encode_to_vec ( value, bincode :: config :: standard ( ) ) . unwrap ( )
96
97
}
97
98
98
99
fn type_name ( ) -> TypeName {
@@ -102,7 +103,7 @@ where
102
103
103
104
impl < T > Key for Bincode < T >
104
105
where
105
- T : Debug + Serialize + DeserializeOwned + Ord ,
106
+ T : Debug + Decode < ( ) > + Encode + Ord ,
106
107
{
107
108
fn compare ( data1 : & [ u8 ] , data2 : & [ u8 ] ) -> Ordering {
108
109
Self :: from_bytes ( data1) . cmp ( & Self :: from_bytes ( data2) )
0 commit comments