@@ -3,10 +3,10 @@ use rkyv::api::high::{HighSerializer, HighValidator};
3
3
use rkyv:: de:: Pool ;
4
4
use rkyv:: rancor:: Strategy ;
5
5
use rkyv:: ser:: allocator:: ArenaHandle ;
6
+ pub use rkyv:: util:: AlignedVec ;
6
7
use rkyv:: { bytecheck, rancor, Archive , Deserialize , Serialize } ;
7
8
use std:: error:: Error ;
8
9
use std:: sync:: Arc ;
9
- pub use rkyv:: util:: AlignedVec ;
10
10
11
11
/// A codec that relies on `rkyv` to encode data in the msgpack format.
12
12
///
@@ -15,13 +15,13 @@ pub struct RkyvCodec;
15
15
16
16
impl < T > Encoder < T > for RkyvCodec
17
17
where
18
- T : for < ' a > Serialize < HighSerializer < AlignedVec , ArenaHandle < ' a > , rancor:: Error > > ,
18
+ T : for < ' a > Serialize < HighSerializer < Vec < u8 > , ArenaHandle < ' a > , rancor:: Error > > ,
19
19
{
20
20
type Error = rancor:: Error ;
21
- type Encoded = AlignedVec ;
21
+ type Encoded = Vec < u8 > ;
22
22
23
23
fn encode ( val : & T ) -> Result < Self :: Encoded , Self :: Error > {
24
- rkyv:: api:: high:: to_bytes_in ( val, AlignedVec :: new ( ) )
24
+ rkyv:: api:: high:: to_bytes_in ( val, Vec :: new ( ) )
25
25
}
26
26
}
27
27
@@ -33,16 +33,17 @@ where
33
33
+ Deserialize < T , Strategy < Pool , rancor:: Error > > ,
34
34
{
35
35
type Error = Arc < dyn Error > ;
36
- type Encoded = AlignedVec ;
36
+ type Encoded = [ u8 ] ;
37
37
38
38
fn decode ( val : & Self :: Encoded ) -> Result < T , Self :: Error > {
39
- rkyv:: from_bytes :: < T , rancor:: Error > ( val) . map_err ( |e| Arc :: new ( e) as Arc < dyn Error > )
39
+ let mut aligned = AlignedVec :: < 16 > :: with_capacity ( val. len ( ) ) ;
40
+ aligned. extend_from_slice ( val) ;
41
+ rkyv:: from_bytes :: < T , rancor:: Error > ( & aligned) . map_err ( |e| Arc :: new ( e) as Arc < dyn Error > )
40
42
}
41
43
}
42
44
43
45
#[ cfg( test) ]
44
46
mod tests {
45
- use rkyv:: util:: AlignedVec ;
46
47
use super :: * ;
47
48
48
49
#[ test]
0 commit comments