@@ -28,7 +28,7 @@ use serde::{Deserialize, Serialize};
28
28
use tantivy:: directory:: error:: OpenReadError ;
29
29
use tantivy:: directory:: { FileHandle , FileSlice , OwnedBytes } ;
30
30
use tantivy:: error:: DataCorruption ;
31
- use tantivy:: { Directory , HasLen , Index , IndexReader , ReloadPolicy } ;
31
+ use tantivy:: { Directory , HasLen , Index , IndexReader , ReloadPolicy , TantivyError } ;
32
32
33
33
use crate :: { CachingDirectory , DebugProxyDirectory } ;
34
34
@@ -100,7 +100,7 @@ impl StaticDirectoryCacheBuilder {
100
100
// Write format version
101
101
wrt. write_all ( b"\x00 " ) ?;
102
102
103
- let file_lengths_bytes = serde_cbor :: to_vec ( & self . file_lengths ) . unwrap ( ) ;
103
+ let file_lengths_bytes = postcard :: to_allocvec ( & self . file_lengths ) . unwrap ( ) ;
104
104
wrt. write_all ( & ( file_lengths_bytes. len ( ) as u64 ) . to_le_bytes ( ) ) ?;
105
105
wrt. write_all ( & file_lengths_bytes[ ..] ) ?;
106
106
@@ -113,7 +113,7 @@ impl StaticDirectoryCacheBuilder {
113
113
offset += buf. len ( ) as u64 ;
114
114
data_buffer. extend_from_slice ( & buf) ;
115
115
}
116
- let idx_bytes = serde_cbor :: to_vec ( & data_idx) . unwrap ( ) ;
116
+ let idx_bytes = postcard :: to_allocvec ( & data_idx) . unwrap ( ) ;
117
117
wrt. write_all ( & ( idx_bytes. len ( ) as u64 ) . to_le_bytes ( ) ) ?;
118
118
wrt. write_all ( & idx_bytes[ ..] ) ?;
119
119
wrt. write_all ( & data_buffer[ ..] ) ?;
@@ -122,10 +122,10 @@ impl StaticDirectoryCacheBuilder {
122
122
}
123
123
}
124
124
125
- fn deserialize_cbor < T > ( bytes : & mut OwnedBytes ) -> serde_cbor :: Result < T >
125
+ fn deserialize_postcard < T > ( bytes : & mut OwnedBytes ) -> postcard :: Result < T >
126
126
where T : serde:: de:: DeserializeOwned {
127
127
let len = bytes. read_u64 ( ) ;
128
- let value = serde_cbor :: from_reader ( & bytes. as_slice ( ) [ ..len as usize ] ) ;
128
+ let value = postcard :: from_bytes ( & bytes. as_slice ( ) [ ..len as usize ] ) ;
129
129
bytes. advance ( len as usize ) ;
130
130
value
131
131
}
@@ -148,9 +148,9 @@ impl StaticDirectoryCache {
148
148
) ) ;
149
149
}
150
150
151
- let file_lengths: HashMap < PathBuf , u64 > = deserialize_cbor ( & mut bytes) . unwrap ( ) ;
151
+ let file_lengths: HashMap < PathBuf , u64 > = deserialize_postcard ( & mut bytes) . unwrap ( ) ;
152
152
153
- let mut slice_offsets: Vec < ( PathBuf , u64 ) > = deserialize_cbor ( & mut bytes) . unwrap ( ) ;
153
+ let mut slice_offsets: Vec < ( PathBuf , u64 ) > = deserialize_postcard ( & mut bytes) . unwrap ( ) ;
154
154
slice_offsets. push ( ( PathBuf :: default ( ) , bytes. len ( ) as u64 ) ) ;
155
155
156
156
let slices = slice_offsets
@@ -214,8 +214,8 @@ impl StaticSliceCache {
214
214
body_len_bytes. copy_from_slice ( len_bytes. as_slice ( ) ) ;
215
215
let body_len = u64:: from_le_bytes ( body_len_bytes) ;
216
216
let ( body, idx) = body. split ( body_len as usize ) ;
217
- let mut idx_bytes = idx. as_slice ( ) ;
218
- let index: SliceCacheIndex = serde_cbor :: from_reader ( & mut idx_bytes) . map_err ( |err| {
217
+ let idx_bytes = idx. as_slice ( ) ;
218
+ let index: SliceCacheIndex = postcard :: from_bytes ( idx_bytes) . map_err ( |err| {
219
219
DataCorruption :: comment_only ( format ! ( "Failed to deserialize the slice index: {err:?}" ) )
220
220
} ) ?;
221
221
Ok ( StaticSliceCache { bytes : body, index } )
@@ -305,8 +305,11 @@ impl StaticSliceCacheBuilder {
305
305
total_len : self . total_len ,
306
306
slices : merged_slices,
307
307
} ;
308
- serde_cbor:: to_writer ( & mut self . wrt , & slices_idx)
309
- . map_err ( |err| io:: Error :: new ( io:: ErrorKind :: Other , err) ) ?;
308
+ self . wrt . extend_from_slice (
309
+ & postcard:: to_allocvec ( & slices_idx) . map_err ( |err| {
310
+ TantivyError :: InternalError ( format ! ( "Could not serialize {err:?}" ) )
311
+ } ) ?,
312
+ ) ;
310
313
self . wrt . extend_from_slice ( & self . offset . to_le_bytes ( ) [ ..] ) ;
311
314
Ok ( self . wrt )
312
315
}
@@ -644,14 +647,8 @@ mod tests {
644
647
stop : 5 ,
645
648
addr : 4 ,
646
649
} ;
647
- let bytes = serde_cbor:: ser:: to_vec ( & slice_entry) ?;
648
- assert_eq ! (
649
- & bytes[ ..] ,
650
- & [
651
- 163 , 101 , 115 , 116 , 97 , 114 , 116 , 1 , 100 , 115 , 116 , 111 , 112 , 5 , 100 , 97 , 100 , 100 ,
652
- 114 , 4
653
- ]
654
- ) ;
650
+ let bytes = postcard:: to_allocvec ( & slice_entry) ?;
651
+ assert_eq ! ( & bytes[ ..] , & [ 1 , 5 , 4 ] ) ;
655
652
Ok ( ( ) )
656
653
}
657
654
0 commit comments