Merge pull request #148 from neithernut/impl-store-retrieve_copy

Implement Store::retrieve_copy()
This commit is contained in:
Matthias Beyer 2016-02-12 18:59:56 +01:00
commit 60ccf58f84

View file

@ -209,7 +209,19 @@ impl Store {
/// Retrieve a copy of a given entry, this cannot be used to mutate /// Retrieve a copy of a given entry, this cannot be used to mutate
/// the one on disk /// the one on disk
pub fn retrieve_copy(&self, id: StoreId) -> Result<Entry> { pub fn retrieve_copy(&self, id: StoreId) -> Result<Entry> {
unimplemented!(); let mut entries_lock = self.entries.write();
if entries_lock.is_err() {
return Err(StoreError::new(StoreErrorKind::LockPoisoned, None))
}
let mut entries = entries_lock.unwrap();
// if the entry is currently modified by the user, we cannot drop it
if entries.get(&id).map(|e| e.is_borrowed()).unwrap_or(false) {
return Err(StoreError::new(StoreErrorKind::IdLocked, None));
}
StoreEntry::new(id).get_entry()
} }
/// Delete an entry /// Delete an entry