1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
use std::collections::BTreeMap;
use std::sync::Arc;
pub struct ArchiveData<T : Send + 'static>{
btree : BTreeMap<String, ArchiveDataItem<T>>,
hash : u128,
}
pub struct ArchiveDataItem<T : Send + 'static>{
converted_data : T,
raw_data : Arc<Vec<u8>>,
}
impl<T : Send + 'static> ArchiveData<T>{
pub fn new(btree : BTreeMap<String, ArchiveDataItem<T>>,
hash : u128) -> ArchiveData<T>{
ArchiveData{ btree, hash }
}
pub fn btree(&self) -> &BTreeMap<String, ArchiveDataItem<T>>{ &self.btree }
pub fn hash(&self) -> u128{ self.hash }
pub fn deconstruct(self) -> BTreeMap<String, ArchiveDataItem<T>>{ self.btree }
}
impl<T : Send + 'static> ArchiveDataItem<T>{
pub fn new(converted_data : T,
raw_data : Arc<Vec<u8>>) -> ArchiveDataItem<T>{
ArchiveDataItem{
converted_data,
raw_data,
}
}
pub fn converted_data(&self) -> &T{ &self.converted_data }
pub fn raw_data(&self) -> &Arc<Vec<u8>>{ &self.raw_data }
pub fn deconstruct(self) -> (T, Arc<Vec<u8>>){ (self.converted_data, self.raw_data) }
}