···
8
-
Archive, Serialize, api::high::HighSerializer, rancor, ser::allocator::ArenaHandle,
8
+
Archive, Deserialize, Serialize,
9
+
api::high::{HighSerializer, HighValidator},
10
+
bytecheck::CheckBytes,
12
+
rancor::{self, Strategy},
13
+
ser::allocator::ArenaHandle,
12
-
use crate::utils::{ReadVariableExt, WriteVariableExt};
18
+
error::{AppError, AppResult},
19
+
utils::{ReadVariableExt, WriteVariableExt},
24
+
pub data: AlignedVec,
20
-
impl<T: Archive> Item<T> {
21
-
pub fn access(&self) -> &T::Archived {
22
-
unsafe { rkyv::access_unchecked::<T::Archived>(&self.data) }
31
+
T::Archived: for<'a> CheckBytes<HighValidator<'a, rancor::Error>>
32
+
+ Deserialize<T, Strategy<Pool, rancor::Error>>,
34
+
pub fn deser(&self) -> AppResult<T> {
35
+
rkyv::from_bytes(&self.data).map_err(AppError::from)
···
let decoded_item = decoder.decode().unwrap().unwrap();
assert_eq!(decoded_item.timestamp, 1000);
251
-
let decoded_data = decoded_item.access();
264
+
let decoded_data = decoded_item.deser().unwrap();
assert_eq!(decoded_data.id, 123);
assert_eq!(decoded_data.value.as_str(), "test");
···
for (original, decoded) in items.iter().zip(decoded_items.iter()) {
assert_eq!(original.timestamp, decoded.timestamp);
311
-
assert_eq!(original.access().id, decoded.access().id);
324
+
assert_eq!(original.deser().unwrap().id, decoded.deser().unwrap().id);
313
-
original.access().value.as_str(),
314
-
decoded.access().value.as_str()
326
+
original.deser().unwrap().value.as_str(),
327
+
decoded.deser().unwrap().value.as_str()
···
assert_eq!(decoded_items[1].timestamp, 2005);
assert_eq!(decoded_items[2].timestamp, 2012);
366
-
assert_eq!(decoded_items[0].access().id, 10);
367
-
assert_eq!(decoded_items[1].access().id, 20);
368
-
assert_eq!(decoded_items[2].access().id, 30);
379
+
assert_eq!(decoded_items[0].deser().unwrap().id, 10);
380
+
assert_eq!(decoded_items[1].deser().unwrap().id, 20);
381
+
assert_eq!(decoded_items[2].deser().unwrap().id, 30);
···
for (original, decoded) in items.iter().zip(decoded_items.iter()) {
assert_eq!(original.timestamp, decoded.timestamp);
421
-
assert_eq!(original.access().id, decoded.access().id);
434
+
assert_eq!(original.deser().unwrap().id, decoded.deser().unwrap().id);
···
let decoded_items = decoded_items.unwrap();
assert_eq!(decoded_items.len(), 2);
501
-
assert_eq!(decoded_items[0].access().value.as_str(), "x");
502
-
assert_eq!(decoded_items[1].access().value.len(), 1000);
503
-
assert_eq!(decoded_items[1].access().value.as_str(), "a".repeat(1000));
514
+
assert_eq!(decoded_items[0].deser().unwrap().value.as_str(), "x");
515
+
assert_eq!(decoded_items[1].deser().unwrap().value.len(), 1000);
517
+
decoded_items[1].deser().unwrap().value.as_str(),