diff --git a/src/layer/base.rs b/src/layer/base.rs index 20cb247b..94013dc6 100644 --- a/src/layer/base.rs +++ b/src/layer/base.rs @@ -1037,48 +1037,47 @@ pub mod tests { use crate::storage::memory::*; pub fn base_layer_files() -> BaseLayerFiles { - let files: Vec<_> = (0..21).map(|_| MemoryBackedStore::new()).collect(); BaseLayerFiles { node_dictionary_files: DictionaryFiles { - blocks_file: files[0].clone(), - offsets_file: files[1].clone(), + blocks_file: MemoryBackedStore::new(), + offsets_file: MemoryBackedStore::new(), }, predicate_dictionary_files: DictionaryFiles { - blocks_file: files[2].clone(), - offsets_file: files[3].clone(), + blocks_file: MemoryBackedStore::new(), + offsets_file: MemoryBackedStore::new(), }, value_dictionary_files: DictionaryFiles { - blocks_file: files[4].clone(), - offsets_file: files[5].clone(), + blocks_file: MemoryBackedStore::new(), + offsets_file: MemoryBackedStore::new(), }, s_p_adjacency_list_files: AdjacencyListFiles { bitindex_files: BitIndexFiles { - bits_file: files[6].clone(), - blocks_file: files[7].clone(), - sblocks_file: files[8].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, - nums_file: files[9].clone(), + nums_file: MemoryBackedStore::new(), }, sp_o_adjacency_list_files: AdjacencyListFiles { bitindex_files: BitIndexFiles { - bits_file: files[10].clone(), - blocks_file: files[11].clone(), - sblocks_file: files[12].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, - nums_file: files[13].clone(), + nums_file: MemoryBackedStore::new(), }, o_ps_adjacency_list_files: AdjacencyListFiles { bitindex_files: BitIndexFiles { - bits_file: files[14].clone(), - blocks_file: files[15].clone(), - sblocks_file: files[16].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, - nums_file: files[17].clone(), + nums_file: MemoryBackedStore::new(), }, predicate_wavelet_tree_files: BitIndexFiles { - bits_file: files[18].clone(), - blocks_file: files[19].clone(), - sblocks_file: files[20].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, } } diff --git a/src/layer/builder.rs b/src/layer/builder.rs index f0a4c56b..331bda2b 100644 --- a/src/layer/builder.rs +++ b/src/layer/builder.rs @@ -296,130 +296,128 @@ mod tests { use crate::storage::memory::*; fn new_base_files() -> BaseLayerFiles { - let files: Vec<_> = (0..21).map(|_| MemoryBackedStore::new()).collect(); BaseLayerFiles { node_dictionary_files: DictionaryFiles { - blocks_file: files[0].clone(), - offsets_file: files[1].clone(), + blocks_file: MemoryBackedStore::new(), + offsets_file: MemoryBackedStore::new(), }, predicate_dictionary_files: DictionaryFiles { - blocks_file: files[2].clone(), - offsets_file: files[3].clone(), + blocks_file: MemoryBackedStore::new(), + offsets_file: MemoryBackedStore::new(), }, value_dictionary_files: DictionaryFiles { - blocks_file: files[4].clone(), - offsets_file: files[5].clone(), + blocks_file: MemoryBackedStore::new(), + offsets_file: MemoryBackedStore::new(), }, s_p_adjacency_list_files: AdjacencyListFiles { bitindex_files: BitIndexFiles { - bits_file: files[6].clone(), - blocks_file: files[7].clone(), - sblocks_file: files[8].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, - nums_file: files[9].clone(), + nums_file: MemoryBackedStore::new(), }, sp_o_adjacency_list_files: AdjacencyListFiles { bitindex_files: BitIndexFiles { - bits_file: files[10].clone(), - blocks_file: files[11].clone(), - sblocks_file: files[12].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, - nums_file: files[13].clone(), + nums_file: MemoryBackedStore::new(), }, o_ps_adjacency_list_files: AdjacencyListFiles { bitindex_files: BitIndexFiles { - bits_file: files[14].clone(), - blocks_file: files[15].clone(), - sblocks_file: files[16].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, - nums_file: files[17].clone(), + nums_file: MemoryBackedStore::new(), }, predicate_wavelet_tree_files: BitIndexFiles { - bits_file: files[18].clone(), - blocks_file: files[19].clone(), - sblocks_file: files[20].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, } } fn new_child_files() -> ChildLayerFiles { - let files: Vec<_> = (0..40).map(|_| MemoryBackedStore::new()).collect(); ChildLayerFiles { node_dictionary_files: DictionaryFiles { - blocks_file: files[0].clone(), - offsets_file: files[1].clone(), + blocks_file: MemoryBackedStore::new(), + offsets_file: MemoryBackedStore::new(), }, predicate_dictionary_files: DictionaryFiles { - blocks_file: files[2].clone(), - offsets_file: files[3].clone(), + blocks_file: MemoryBackedStore::new(), + offsets_file: MemoryBackedStore::new(), }, value_dictionary_files: DictionaryFiles { - blocks_file: files[4].clone(), - offsets_file: files[5].clone(), + blocks_file: MemoryBackedStore::new(), + offsets_file: MemoryBackedStore::new(), }, - pos_subjects_file: files[6].clone(), - pos_objects_file: files[7].clone(), - neg_subjects_file: files[8].clone(), - neg_objects_file: files[9].clone(), + pos_subjects_file: MemoryBackedStore::new(), + pos_objects_file: MemoryBackedStore::new(), + neg_subjects_file: MemoryBackedStore::new(), + neg_objects_file: MemoryBackedStore::new(), pos_s_p_adjacency_list_files: AdjacencyListFiles { bitindex_files: BitIndexFiles { - bits_file: files[10].clone(), - blocks_file: files[11].clone(), - sblocks_file: files[12].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, - nums_file: files[13].clone(), + nums_file: MemoryBackedStore::new(), }, pos_sp_o_adjacency_list_files: AdjacencyListFiles { bitindex_files: BitIndexFiles { - bits_file: files[14].clone(), - blocks_file: files[15].clone(), - sblocks_file: files[16].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, - nums_file: files[17].clone(), + nums_file: MemoryBackedStore::new(), }, pos_o_ps_adjacency_list_files: AdjacencyListFiles { bitindex_files: BitIndexFiles { - bits_file: files[18].clone(), - blocks_file: files[19].clone(), - sblocks_file: files[20].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, - nums_file: files[21].clone(), + nums_file: MemoryBackedStore::new(), }, neg_s_p_adjacency_list_files: AdjacencyListFiles { bitindex_files: BitIndexFiles { - bits_file: files[22].clone(), - blocks_file: files[23].clone(), - sblocks_file: files[24].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, - nums_file: files[25].clone(), + nums_file: MemoryBackedStore::new(), }, neg_sp_o_adjacency_list_files: AdjacencyListFiles { bitindex_files: BitIndexFiles { - bits_file: files[26].clone(), - blocks_file: files[27].clone(), - sblocks_file: files[28].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, - nums_file: files[29].clone(), + nums_file: MemoryBackedStore::new(), }, neg_o_ps_adjacency_list_files: AdjacencyListFiles { bitindex_files: BitIndexFiles { - bits_file: files[30].clone(), - blocks_file: files[31].clone(), - sblocks_file: files[32].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, - nums_file: files[33].clone(), + nums_file: MemoryBackedStore::new(), }, pos_predicate_wavelet_tree_files: BitIndexFiles { - bits_file: files[34].clone(), - blocks_file: files[35].clone(), - sblocks_file: files[36].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, neg_predicate_wavelet_tree_files: BitIndexFiles { - bits_file: files[37].clone(), - blocks_file: files[38].clone(), - sblocks_file: files[39].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, } } diff --git a/src/layer/child.rs b/src/layer/child.rs index 22b574b4..c131f20d 100644 --- a/src/layer/child.rs +++ b/src/layer/child.rs @@ -1594,84 +1594,82 @@ pub mod tests { use crate::layer::base::tests::*; use crate::storage::memory::*; pub fn child_layer_files() -> ChildLayerFiles { - let files: Vec<_> = (0..40).map(|_| MemoryBackedStore::new()).collect(); - ChildLayerFiles { node_dictionary_files: DictionaryFiles { - blocks_file: files[0].clone(), - offsets_file: files[1].clone(), + blocks_file: MemoryBackedStore::new(), + offsets_file: MemoryBackedStore::new(), }, predicate_dictionary_files: DictionaryFiles { - blocks_file: files[2].clone(), - offsets_file: files[3].clone(), + blocks_file: MemoryBackedStore::new(), + offsets_file: MemoryBackedStore::new(), }, value_dictionary_files: DictionaryFiles { - blocks_file: files[4].clone(), - offsets_file: files[5].clone(), + blocks_file: MemoryBackedStore::new(), + offsets_file: MemoryBackedStore::new(), }, - pos_subjects_file: files[6].clone(), - pos_objects_file: files[7].clone(), - neg_subjects_file: files[8].clone(), - neg_objects_file: files[9].clone(), + pos_subjects_file: MemoryBackedStore::new(), + pos_objects_file: MemoryBackedStore::new(), + neg_subjects_file: MemoryBackedStore::new(), + neg_objects_file: MemoryBackedStore::new(), pos_s_p_adjacency_list_files: AdjacencyListFiles { bitindex_files: BitIndexFiles { - bits_file: files[10].clone(), - blocks_file: files[11].clone(), - sblocks_file: files[12].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, - nums_file: files[13].clone(), + nums_file: MemoryBackedStore::new(), }, pos_sp_o_adjacency_list_files: AdjacencyListFiles { bitindex_files: BitIndexFiles { - bits_file: files[14].clone(), - blocks_file: files[15].clone(), - sblocks_file: files[16].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, - nums_file: files[17].clone(), + nums_file: MemoryBackedStore::new(), }, pos_o_ps_adjacency_list_files: AdjacencyListFiles { bitindex_files: BitIndexFiles { - bits_file: files[18].clone(), - blocks_file: files[19].clone(), - sblocks_file: files[20].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, - nums_file: files[21].clone(), + nums_file: MemoryBackedStore::new(), }, neg_s_p_adjacency_list_files: AdjacencyListFiles { bitindex_files: BitIndexFiles { - bits_file: files[22].clone(), - blocks_file: files[23].clone(), - sblocks_file: files[24].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, - nums_file: files[25].clone(), + nums_file: MemoryBackedStore::new(), }, neg_sp_o_adjacency_list_files: AdjacencyListFiles { bitindex_files: BitIndexFiles { - bits_file: files[26].clone(), - blocks_file: files[27].clone(), - sblocks_file: files[28].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, - nums_file: files[29].clone(), + nums_file: MemoryBackedStore::new(), }, neg_o_ps_adjacency_list_files: AdjacencyListFiles { bitindex_files: BitIndexFiles { - bits_file: files[30].clone(), - blocks_file: files[31].clone(), - sblocks_file: files[32].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, - nums_file: files[33].clone(), + nums_file: MemoryBackedStore::new(), }, pos_predicate_wavelet_tree_files: BitIndexFiles { - bits_file: files[34].clone(), - blocks_file: files[35].clone(), - sblocks_file: files[36].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, neg_predicate_wavelet_tree_files: BitIndexFiles { - bits_file: files[37].clone(), - blocks_file: files[38].clone(), - sblocks_file: files[39].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, } } diff --git a/src/storage/memory.rs b/src/storage/memory.rs index 1b78343a..0b0fb31e 100644 --- a/src/storage/memory.rs +++ b/src/storage/memory.rs @@ -247,49 +247,47 @@ impl LayerStore for MemoryLayerStore { &self, ) -> Box, Error = io::Error> + Send> { let name = rand::random(); - - let files: Vec<_> = (0..21).map(|_| MemoryBackedStore::new()).collect(); let blf = BaseLayerFiles { node_dictionary_files: DictionaryFiles { - blocks_file: files[0].clone(), - offsets_file: files[1].clone(), + blocks_file: MemoryBackedStore::new(), + offsets_file: MemoryBackedStore::new(), }, predicate_dictionary_files: DictionaryFiles { - blocks_file: files[2].clone(), - offsets_file: files[3].clone(), + blocks_file: MemoryBackedStore::new(), + offsets_file: MemoryBackedStore::new(), }, value_dictionary_files: DictionaryFiles { - blocks_file: files[4].clone(), - offsets_file: files[5].clone(), + blocks_file: MemoryBackedStore::new(), + offsets_file: MemoryBackedStore::new(), }, s_p_adjacency_list_files: AdjacencyListFiles { bitindex_files: BitIndexFiles { - bits_file: files[6].clone(), - blocks_file: files[7].clone(), - sblocks_file: files[8].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, - nums_file: files[9].clone(), + nums_file: MemoryBackedStore::new(), }, sp_o_adjacency_list_files: AdjacencyListFiles { bitindex_files: BitIndexFiles { - bits_file: files[10].clone(), - blocks_file: files[11].clone(), - sblocks_file: files[12].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, - nums_file: files[13].clone(), + nums_file: MemoryBackedStore::new(), }, o_ps_adjacency_list_files: AdjacencyListFiles { bitindex_files: BitIndexFiles { - bits_file: files[14].clone(), - blocks_file: files[15].clone(), - sblocks_file: files[16].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, - nums_file: files[17].clone(), + nums_file: MemoryBackedStore::new(), }, predicate_wavelet_tree_files: BitIndexFiles { - bits_file: files[18].clone(), - blocks_file: files[19].clone(), - sblocks_file: files[20].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, }; @@ -318,84 +316,82 @@ impl LayerStore for MemoryLayerStore { }) .and_then(move |parent_layer| { let name = rand::random(); - let files: Vec<_> = (0..40).map(|_| MemoryBackedStore::new()).collect(); - let clf = ChildLayerFiles { node_dictionary_files: DictionaryFiles { - blocks_file: files[0].clone(), - offsets_file: files[1].clone(), + blocks_file: MemoryBackedStore::new(), + offsets_file: MemoryBackedStore::new(), }, predicate_dictionary_files: DictionaryFiles { - blocks_file: files[2].clone(), - offsets_file: files[3].clone(), + blocks_file: MemoryBackedStore::new(), + offsets_file: MemoryBackedStore::new(), }, value_dictionary_files: DictionaryFiles { - blocks_file: files[4].clone(), - offsets_file: files[5].clone(), + blocks_file: MemoryBackedStore::new(), + offsets_file: MemoryBackedStore::new(), }, - pos_subjects_file: files[6].clone(), - pos_objects_file: files[7].clone(), - neg_subjects_file: files[8].clone(), - neg_objects_file: files[9].clone(), + pos_subjects_file: MemoryBackedStore::new(), + pos_objects_file: MemoryBackedStore::new(), + neg_subjects_file: MemoryBackedStore::new(), + neg_objects_file: MemoryBackedStore::new(), pos_s_p_adjacency_list_files: AdjacencyListFiles { bitindex_files: BitIndexFiles { - bits_file: files[10].clone(), - blocks_file: files[11].clone(), - sblocks_file: files[12].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, - nums_file: files[13].clone(), + nums_file: MemoryBackedStore::new(), }, pos_sp_o_adjacency_list_files: AdjacencyListFiles { bitindex_files: BitIndexFiles { - bits_file: files[14].clone(), - blocks_file: files[15].clone(), - sblocks_file: files[16].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, - nums_file: files[17].clone(), + nums_file: MemoryBackedStore::new(), }, pos_o_ps_adjacency_list_files: AdjacencyListFiles { bitindex_files: BitIndexFiles { - bits_file: files[18].clone(), - blocks_file: files[19].clone(), - sblocks_file: files[20].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, - nums_file: files[21].clone(), + nums_file: MemoryBackedStore::new(), }, neg_s_p_adjacency_list_files: AdjacencyListFiles { bitindex_files: BitIndexFiles { - bits_file: files[22].clone(), - blocks_file: files[23].clone(), - sblocks_file: files[24].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, - nums_file: files[25].clone(), + nums_file: MemoryBackedStore::new(), }, neg_sp_o_adjacency_list_files: AdjacencyListFiles { bitindex_files: BitIndexFiles { - bits_file: files[26].clone(), - blocks_file: files[27].clone(), - sblocks_file: files[28].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, - nums_file: files[29].clone(), + nums_file: MemoryBackedStore::new(), }, neg_o_ps_adjacency_list_files: AdjacencyListFiles { bitindex_files: BitIndexFiles { - bits_file: files[30].clone(), - blocks_file: files[31].clone(), - sblocks_file: files[32].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, - nums_file: files[33].clone(), + nums_file: MemoryBackedStore::new(), }, pos_predicate_wavelet_tree_files: BitIndexFiles { - bits_file: files[34].clone(), - blocks_file: files[35].clone(), - sblocks_file: files[36].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, neg_predicate_wavelet_tree_files: BitIndexFiles { - bits_file: files[37].clone(), - blocks_file: files[38].clone(), - sblocks_file: files[39].clone(), + bits_file: MemoryBackedStore::new(), + blocks_file: MemoryBackedStore::new(), + sblocks_file: MemoryBackedStore::new(), }, };