From fdade86b2a7bab6721bed0a1c2b9643a43a7d72d Mon Sep 17 00:00:00 2001 From: Lionel Sambuc Date: Tue, 7 Jan 2020 10:16:39 +0100 Subject: [PATCH] Remove conversions & shorten variable lifetime --- src/database/space_index.rs | 2 +- src/json/model.rs | 18 ++++++++---------- src/json/storage.rs | 11 +++-------- 3 files changed, 12 insertions(+), 19 deletions(-) diff --git a/src/database/space_index.rs b/src/database/space_index.rs index 761f0f6..383c899 100644 --- a/src/database/space_index.rs +++ b/src/database/space_index.rs @@ -53,7 +53,7 @@ impl SpaceFields { pub fn new(space_id: &str, value: usize) -> Self { SpaceFields { space_id: space_id.into(), - value: value.into(), + value, } } diff --git a/src/json/model.rs b/src/json/model.rs index 7a43cca..5eb3b20 100644 --- a/src/json/model.rs +++ b/src/json/model.rs @@ -169,9 +169,8 @@ pub fn build_index( let mut properties = vec![]; let mut space_set_objects = vec![]; - let mut properties_ref = vec![]; - { + let mut properties_ref = vec![]; let mut properties_hm = HashMap::new(); for object in objects { @@ -204,16 +203,15 @@ pub fn build_index( } properties.append(&mut properties_hm.drain().map(|(_, v)| v).collect::>()); + properties.sort_unstable_by(|a, b| a.id().cmp(b.id())); + + space_set_objects.iter_mut().for_each(|object| { + let id = properties_ref[object.value()]; + let value = properties.binary_search_by_key(&id, |p| p.id()).unwrap(); + object.set_value(value); + }); } - properties.sort_unstable_by(|a, b| a.id().cmp(b.id())); - - space_set_objects.iter_mut().for_each(|object| { - let id = properties_ref[object.value()]; - let value = properties.binary_search_by_key(&id, |p| p.id()).unwrap(); - object.set_value(value); - }); - Core::new( name, version, diff --git a/src/json/storage.rs b/src/json/storage.rs index fc56f89..efb0b89 100644 --- a/src/json/storage.rs +++ b/src/json/storage.rs @@ -86,14 +86,9 @@ pub fn build( .map(|s| s.into()) .collect::>(); - let core = model::build_index( - name, - version, - &spaces, - &load::>(&fn_objects), - scales, - max_elements, - ); + let objects = load::>(&fn_objects); + + let core = model::build_index(name, version, &spaces, &objects, scales, max_elements); store((spaces, core), &fn_index); }