1
1
use crate :: { Decoder , Encoder } ;
2
- use rkyv:: de:: deserializers:: SharedDeserializeMap ;
3
- use rkyv:: ser:: serializers:: AllocSerializer ;
4
- use rkyv:: validation:: validators:: DefaultValidator ;
5
- use rkyv:: { Archive , CheckBytes , Deserialize , Fallible , Serialize } ;
2
+ use rkyv:: api:: high:: { HighSerializer , HighValidator } ;
3
+ use rkyv:: de:: Pool ;
4
+ use rkyv:: rancor:: Strategy ;
5
+ use rkyv:: ser:: allocator:: ArenaHandle ;
6
+ use rkyv:: { bytecheck, rancor, Archive , Deserialize , Serialize } ;
6
7
use std:: error:: Error ;
7
8
use std:: sync:: Arc ;
8
9
@@ -13,27 +14,28 @@ pub struct RkyvCodec;
13
14
14
15
impl < T > Encoder < T > for RkyvCodec
15
16
where
16
- T : Serialize < AllocSerializer < 1024 > > ,
17
+ T : for < ' a > Serialize < HighSerializer < Vec < u8 > , ArenaHandle < ' a > , rancor :: Error > > ,
17
18
{
18
- type Error = < AllocSerializer < 1024 > as Fallible > :: Error ;
19
+ type Error = rancor :: Error ;
19
20
type Encoded = Vec < u8 > ;
20
21
21
22
fn encode ( val : & T ) -> Result < Self :: Encoded , Self :: Error > {
22
- Ok ( rkyv:: to_bytes :: < T , 1024 > ( val) ? . to_vec ( ) )
23
+ rkyv:: api :: high :: to_bytes_in ( val, Vec :: new ( ) )
23
24
}
24
25
}
25
26
26
27
impl < T > Decoder < T > for RkyvCodec
27
28
where
28
29
T : Archive ,
29
- for < ' a > T :: Archived :
30
- ' a + CheckBytes < DefaultValidator < ' a > > + Deserialize < T , SharedDeserializeMap > ,
30
+ for < ' a > T :: Archived : ' a
31
+ + bytecheck:: CheckBytes < HighValidator < ' a , rancor:: Error > >
32
+ + Deserialize < T , Strategy < Pool , rancor:: Error > > ,
31
33
{
32
34
type Error = Arc < dyn Error > ;
33
35
type Encoded = [ u8 ] ;
34
36
35
37
fn decode ( val : & Self :: Encoded ) -> Result < T , Self :: Error > {
36
- rkyv:: from_bytes :: < T > ( val) . map_err ( |e| Arc :: new ( e) as Arc < dyn Error > )
38
+ rkyv:: from_bytes :: < T , rancor :: Error > ( val) . map_err ( |e| Arc :: new ( e) as Arc < dyn Error > )
37
39
}
38
40
}
39
41
@@ -44,7 +46,6 @@ mod tests {
44
46
#[ test]
45
47
fn test_rkyv_codec ( ) {
46
48
#[ derive( Clone , Debug , PartialEq , rkyv:: Archive , rkyv:: Serialize , rkyv:: Deserialize ) ]
47
- #[ archive( check_bytes) ]
48
49
struct Test {
49
50
s : String ,
50
51
i : i32 ,
0 commit comments