From 9153240b9bd85149f6a0a473364fb8dc7ccd2c7f Mon Sep 17 00:00:00 2001 From: Astro Date: Fri, 11 Dec 2020 18:53:17 +0100 Subject: [PATCH] append(): break out pub fn get_bytes_used() --- src/lib.rs | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index ce81174..87b7d82 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -63,6 +63,17 @@ impl Store { .transpose()) } + /// how many bytes are currently used + /// + /// equally, offset of free space + pub fn get_bytes_used(&self) -> Result { + let mut iter = Iter::new(self.backend.data().as_ref()); + while let Some(result) = iter.next() { + let _ = result?; + } + Ok(iter.offset) + } + unsafe fn append_at(&mut self, mut offset: usize, key: &[u8], value: &[u8]) -> Result> { let record_size = 4 + key.len() + 1 + value.len(); @@ -122,16 +133,8 @@ impl Store { } fn append(&mut self, key: &str, value: &[u8]) -> Result<(), Error> { - let free_offset = { - let mut iter = Iter::new(self.backend.data().as_ref()); - while let Some(result) = iter.next() { - let _ = result?; - } - iter.offset - }; - + let free_offset = self.get_bytes_used()?; unsafe { self.append_at(free_offset, key.as_bytes(), value)? }; - Ok(()) }