From 169eda5ceb235d8c7ebbe8f5039c59b7c706bf62 Mon Sep 17 00:00:00 2001 From: oluiscabral Date: Mon, 23 Dec 2024 11:10:44 -0300 Subject: [PATCH] Use `BaseStorage` ref --- fs-storage/src/base_storage.rs | 2 +- fs-storage/src/file_storage.rs | 9 ++++----- fs-storage/src/folder_storage.rs | 7 +++---- fs-storage/src/jni/file_storage.rs | 2 +- 4 files changed, 9 insertions(+), 11 deletions(-) diff --git a/fs-storage/src/base_storage.rs b/fs-storage/src/base_storage.rs index 73db729f..2ecf04cc 100644 --- a/fs-storage/src/base_storage.rs +++ b/fs-storage/src/base_storage.rs @@ -74,5 +74,5 @@ pub trait BaseStorage: AsRef> { fn erase(&self) -> Result<()>; /// Merge values from another key-value mapping. - fn merge_from(&mut self, other: impl AsRef>) -> Result<()>; + fn merge_from(&mut self, other: &BTreeMap) -> Result<()>; } diff --git a/fs-storage/src/file_storage.rs b/fs-storage/src/file_storage.rs index 2e3332e9..5151bd23 100644 --- a/fs-storage/src/file_storage.rs +++ b/fs-storage/src/file_storage.rs @@ -226,7 +226,7 @@ where SyncStatus::StorageStale => self.write_fs().map(|_| ()), SyncStatus::Diverge => { let data = self.load_fs_data()?; - self.merge_from(&data)?; + self.merge_from(&data.entries)?; self.write_fs()?; Ok(()) } @@ -289,12 +289,11 @@ where } /// Merge the data from another storage instance into this storage instance - fn merge_from(&mut self, other: impl AsRef>) -> Result<()> + fn merge_from(&mut self, other: &BTreeMap) -> Result<()> where V: Monoid, { - let other_entries = other.as_ref(); - for (key, value) in other_entries { + for (key, value) in other { if let Some(existing_value) = self.data.entries.get(key) { let resolved_value = V::combine(existing_value, value); self.set(key.clone(), resolved_value); @@ -463,7 +462,7 @@ mod tests { file_storage_2.set("key3".to_string(), 9); file_storage_1 - .merge_from(&file_storage_2) + .merge_from(&file_storage_2.data.entries) .unwrap(); assert_eq!(file_storage_1.as_ref().get("key1"), Some(&3)); assert_eq!(file_storage_1.as_ref().get("key2"), Some(&6)); diff --git a/fs-storage/src/folder_storage.rs b/fs-storage/src/folder_storage.rs index 68892a49..a11b9ee3 100644 --- a/fs-storage/src/folder_storage.rs +++ b/fs-storage/src/folder_storage.rs @@ -391,12 +391,11 @@ where } /// Merge the data from another folder storage instance into this folder storage instance - fn merge_from(&mut self, other: impl AsRef>) -> Result<()> + fn merge_from(&mut self, other: &BTreeMap) -> Result<()> where V: Monoid, { - let other_entries = other.as_ref(); - for (key, value) in other_entries { + for (key, value) in other { if let Some(existing_value) = self.data.get(key) { let resolved_value = V::combine(existing_value, value); self.set(key.clone(), resolved_value); @@ -580,7 +579,7 @@ mod tests { storage2.set("key1".to_string(), 3); storage2.set("key3".to_string(), 9); - storage1.merge_from(&storage2).unwrap(); + storage1.merge_from(&storage2.data).unwrap(); assert_eq!(storage1.as_ref().get("key1"), Some(&3)); assert_eq!(storage1.as_ref().get("key2"), Some(&6)); assert_eq!(storage1.as_ref().get("key3"), Some(&9)); diff --git a/fs-storage/src/jni/file_storage.rs b/fs-storage/src/jni/file_storage.rs index b62ed5bb..ea13758d 100644 --- a/fs-storage/src/jni/file_storage.rs +++ b/fs-storage/src/jni/file_storage.rs @@ -231,7 +231,7 @@ pub extern "system" fn Java_dev_arkbuilders_core_FileStorage_merge( other_file_storage_ptr: jlong, ) { FileStorage::from_jlong(file_storage_ptr) - .merge_from(FileStorage::from_jlong(other_file_storage_ptr)) + .merge_from(FileStorage::from_jlong(other_file_storage_ptr).as_ref()) .unwrap_or_else(|err| { env.throw_new("java/lang/RuntimeException", err.to_string()) .unwrap();