diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2016-10-13 14:38:33 +0200 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2016-10-15 15:49:01 +0200 |
commit | da408f60fde39e5ad58f430c2a58f3784ff6d7fa (patch) | |
tree | f6a0fa1fc59672ce94cdd752d3ff7e156b6efe68 /libimagstore | |
parent | 3fe8ec5d337e419f688ce7992edbbbc2237b8f32 (diff) |
Refactor iflet into and_then().or_else()
Diffstat (limited to 'libimagstore')
-rw-r--r-- | libimagstore/src/store.rs | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/libimagstore/src/store.rs b/libimagstore/src/store.rs index cc36367a..195cc9cb 100644 --- a/libimagstore/src/store.rs +++ b/libimagstore/src/store.rs @@ -160,18 +160,16 @@ impl StoreEntry { } fn get_entry(&mut self) -> Result<Entry> { + let id = &self.id.clone(); if !self.is_borrowed() { - let file = self.file.get_file_content(); - if let Err(err) = file { - if err.err_type() == SEK::FileNotFound { - Ok(Entry::new(self.id.clone())) + self.file + .get_file_content() + .and_then(|mut file| Entry::from_reader(id.clone(), &mut file)) + .or_else(|err| if err.err_type() == SEK::FileNotFound { + Ok(Entry::new(id.clone())) } else { Err(err) - } - } else { - // TODO: - Entry::from_reader(self.id.clone(), &mut file.unwrap()) - } + }) } else { Err(SE::new(SEK::EntryAlreadyBorrowed, None)) } |