pub trait Storage {
// Required methods
fn store(&mut self, message: Message) -> Result<(), Error>;
fn messages(&self) -> Result<Vec<Message>, Error>;
// Provided method
fn messages_from_imei(&self, imei: &str) -> Result<Vec<Message>, Error> { ... }
}
Expand description
Basic storage operations.
Required Methods§
sourcefn store(&mut self, message: Message) -> Result<(), Error>
fn store(&mut self, message: Message) -> Result<(), Error>
Stores a message, consuming it.
Examples
let message = Message::from_path("data/0-mo.sbd").unwrap();
let mut storage = MemoryStorage::new();
storage.store(message);
sourcefn messages(&self) -> Result<Vec<Message>, Error>
fn messages(&self) -> Result<Vec<Message>, Error>
Retrieves all messages in this storage as a vector.
Examples
let message = Message::from_path("data/0-mo.sbd").unwrap();
let mut storage = MemoryStorage::new();
storage.store(message.clone());
let messages = storage.messages().unwrap();
assert_eq!(vec![message], messages);
Provided Methods§
sourcefn messages_from_imei(&self, imei: &str) -> Result<Vec<Message>, Error>
fn messages_from_imei(&self, imei: &str) -> Result<Vec<Message>, Error>
Retrieves all messages for a given IMEI.
The default implementation just filters the vector provided by messages
, but some
implementors could be more intelligent.
Examples
let message = Message::from_path("data/0-mo.sbd").unwrap();
let mut storage = MemoryStorage::new();
storage.store(message.clone());
let messages = storage.messages_from_imei("300234063904190").unwrap();
assert_eq!(vec![message], messages);
let messages = storage.messages_from_imei("300234063904191").unwrap();
assert!(messages.is_empty());