pub trait Repository<T: RepositoryItem>: Debug {
// Required methods
fn create(&mut self, item: T) -> Result<Id>;
fn get(&self, id: Id) -> Result<Option<T>>;
fn list(&self) -> Result<Vec<T>>;
fn update(&mut self, item: T) -> Result<()>;
fn delete(&mut self, id: Id) -> Result<()>;
}