summaryrefslogtreecommitdiffstats
path: root/libimagstore
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2016-10-13 14:38:33 +0200
committerMatthias Beyer <mail@beyermatthias.de>2016-10-15 15:49:01 +0200
commitda408f60fde39e5ad58f430c2a58f3784ff6d7fa (patch)
treef6a0fa1fc59672ce94cdd752d3ff7e156b6efe68 /libimagstore
parent3fe8ec5d337e419f688ce7992edbbbc2237b8f32 (diff)
Refactor iflet into and_then().or_else()
Diffstat (limited to 'libimagstore')
-rw-r--r--libimagstore/src/store.rs16
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))
}