Mercurial > lbo > hg > leveldb-rs
changeset 567:77867ac45e79
Deliver better error when failing to parse file name
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Fri, 08 Jul 2022 13:15:37 -0700 |
parents | bc90b6a413d5 |
children | bbcfbcd90d80 |
files | src/db_impl.rs src/error.rs |
diffstat | 2 files changed, 7 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/db_impl.rs Fri Jul 08 13:04:30 2022 -0700 +++ b/src/db_impl.rs Fri Jul 08 13:15:37 2022 -0700 @@ -186,13 +186,16 @@ let mut log_files = vec![]; for file in &filenames { - if let Ok((num, typ)) = parse_file_name(&file) { + match parse_file_name(&file) { + Ok((num, typ)) => { expected.remove(&num); if typ == FileType::Log && (num >= self.vset.borrow().log_num || num == self.vset.borrow().prev_log_num) { log_files.push(num); } + }, + Err(e) => return Err(e.annotate(format!("While parsing {:?}", file))) } } if !expected.is_empty() {
--- a/src/error.rs Fri Jul 08 13:04:30 2022 -0700 +++ b/src/error.rs Fri Jul 08 13:15:37 2022 -0700 @@ -67,6 +67,9 @@ } Status { code, err } } + pub fn annotate<S: AsRef<str>>(self, msg: S) -> Status { + Status { code: self.code, err: format!("{}: {}", msg.as_ref(), self.err) } + } } /// LevelDB's result type