Trait sbd::storage::Storage

source ·
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§

source

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);
source

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§

source

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());

Implementors§

source§

impl Storage for sbd::storage::FilesystemStorage

source§

impl Storage for sbd::storage::MemoryStorage