use std::path::PathBuf;
use std::result::Result as RResult;
use std::sync::Arc;
use std::sync::RWLock;

pub use entry::Entry;
pub use error::StoreError;

pub type Result<T> = RResult<T, StoreError>;

pub struct Store {
    location: PathBuf,
}

impl Store {

    pub fn create(entry: Entry) -> Result<()> {
        unimplemented!()
    }

    pub fn read(path: PathBuf) -> Result<Arc<RWLock<Entry>>> {
        unimplemented!()
    }

    pub fn update(entry: Arc<RWLock<Entry>>) -> Result<()> {
        unimplemented!()
    }

    pub fn delete(path: PathBuf) -> Result<()> {
        unimplemented!()
    }

}


use std::path::PathBuf;
use std::result::Result as RResult;

pub use entry::Entry;
pub use error::StoreError;

pub type Result<T> = RResult<T, StoreError>;

pub struct Store {
    location: PathBuf,
}

impl Store {

    pub fn create(entry: Entry) -> Result<()> {
        unimplemented!()
    }

    pub fn read(path: PathBuf) -> Result<Entry> {
        unimplemented!()
    }

    pub fn update(entry: Entry) -> Result<()> {
        unimplemented!()
    }

    pub fn delete(path: PathBuf) -> Result<()> {
        unimplemented!()
    }

}


--- 
+++ 
@@ -1,5 +1,7 @@
 use std::path::PathBuf;
 use std::result::Result as RResult;
+use std::sync::Arc;
+use std::sync::RWLock;
 
 pub use entry::Entry;
 pub use error::StoreError;
@@ -16,11 +18,11 @@
         unimplemented!()
     }
 
-    pub fn read(path: PathBuf) -> Result<Entry> {
+    pub fn read(path: PathBuf) -> Result<Arc<RWLock<Entry>>> {
         unimplemented!()
     }
 
-    pub fn update(entry: Entry) -> Result<()> {
+    pub fn update(entry: Arc<RWLock<Entry>>) -> Result<()> {
         unimplemented!()
     }
 
Fixup: Store type: read() should return Arc<RWLock<>>, update() should take that
