From 0b2243acf0f5da2d347ed335cfa1f46e76759afb Mon Sep 17 00:00:00 2001 From: PinelliaC Date: Tue, 6 Feb 2024 11:37:59 +0800 Subject: [PATCH] refactor: error handling (#41) --- mini-lsm-starter/src/lsm_iterator.rs | 6 +++++- mini-lsm/src/lsm_iterator.rs | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/mini-lsm-starter/src/lsm_iterator.rs b/mini-lsm-starter/src/lsm_iterator.rs index 82842b2..909f2cb 100644 --- a/mini-lsm-starter/src/lsm_iterator.rs +++ b/mini-lsm-starter/src/lsm_iterator.rs @@ -46,11 +46,15 @@ impl StorageIterator for LsmIterator { /// `is_valid` should return false, and `next` should always return an error. pub struct FusedIterator { iter: I, + has_errored: bool, } impl FusedIterator { pub fn new(iter: I) -> Self { - Self { iter } + Self { + iter, + has_errored: false, + } } } diff --git a/mini-lsm/src/lsm_iterator.rs b/mini-lsm/src/lsm_iterator.rs index 044769c..448989d 100644 --- a/mini-lsm/src/lsm_iterator.rs +++ b/mini-lsm/src/lsm_iterator.rs @@ -106,14 +106,14 @@ impl StorageIterator for FusedIterator { } fn key(&self) -> Self::KeyType<'_> { - if self.has_errored || !self.iter.is_valid() { + if !self.is_valid() { panic!("invalid access to the underlying iterator"); } self.iter.key() } fn value(&self) -> &[u8] { - if self.has_errored || !self.iter.is_valid() { + if !self.is_valid() { panic!("invalid access to the underlying iterator"); } self.iter.value()