Struct mmap_storage::serializer::FileView [−][src]
pub struct FileView<Data, Ser> { /* fields omitted */ }
View on memory mapped File's Data.
In comparsion with File it doesn't
hold Data
in memory and instead load on demand.
Type parameters:
Data
- is data's type that can be serialized and de-serialized usingserde
Ser
- describesserde
implementation to use
Usage:
extern crate mmap_storage; use std::fs; use std::collections::HashMap; const STORAGE_PATH: &'static str = "some_view.toml"; use mmap_storage::serializer::{ FileView, Toml }; fn handle_storage() { let mut storage = FileView::<HashMap<String, String>, Toml>::open(STORAGE_PATH).expect("To create storage"); let mut data = match storage.load() { Ok(data) => data, Err(error) => HashMap::new() }; data.insert(1.to_string(), "".to_string()); storage.save(&data); } fn main() { handle_storage(); let _ = fs::remove_file(STORAGE_PATH); }
Methods
impl<Data, Ser> FileView<Data, Ser>
[src]
impl<Data, Ser> FileView<Data, Ser>
pub fn open<P: AsRef<Path>>(path: P) -> Result<Self>
[src]
pub fn open<P: AsRef<Path>>(path: P) -> Result<Self>
Opens view on file storage.
pub fn open_or_default<'de, P: AsRef<Path>>(path: P) -> Result<Self> where
Data: Serialize + Deserialize<'de> + Default,
Ser: Serialization<'de, Data>,
[src]
pub fn open_or_default<'de, P: AsRef<Path>>(path: P) -> Result<Self> where
Data: Serialize + Deserialize<'de> + Default,
Ser: Serialization<'de, Data>,
Opens view on file storage if it exists. If not initialize with default impl.
Note it is error to try to write empty data.
pub fn open_or<'de, P: AsRef<Path>>(path: P, default: &Data) -> Result<Self> where
Data: Serialize + Deserialize<'de>,
Ser: Serialization<'de, Data>,
[src]
pub fn open_or<'de, P: AsRef<Path>>(path: P, default: &Data) -> Result<Self> where
Data: Serialize + Deserialize<'de>,
Ser: Serialization<'de, Data>,
Opens view on file storage if it exists. If not initialize use provided default data.
Note it is error to try to write empty data.
pub fn load<'de>(&'de self) -> Result<Data> where
Data: Serialize + Deserialize<'de>,
Ser: Serialization<'de, Data>,
[src]
pub fn load<'de>(&'de self) -> Result<Data> where
Data: Serialize + Deserialize<'de>,
Ser: Serialization<'de, Data>,
Loads data, if it is available.
If currently file cannot be serialized it returns Error
pub fn load_owned<'de>(&'de self) -> Result<Data> where
Data: Serialize + DeserializeOwned,
Ser: Serialization<'de, Data>,
[src]
pub fn load_owned<'de>(&'de self) -> Result<Data> where
Data: Serialize + DeserializeOwned,
Ser: Serialization<'de, Data>,
Loads data, if it is available.
If currently file cannot be serialized it returns Error
pub fn load_or_default<'de>(&'de self) -> Data where
Data: Serialize + Deserialize<'de> + Default,
Ser: Serialization<'de, Data>,
[src]
pub fn load_or_default<'de>(&'de self) -> Data where
Data: Serialize + Deserialize<'de> + Default,
Ser: Serialization<'de, Data>,
Loads data, if it is available or use default impl.
pub fn modify<'de, F: FnOnce(Data) -> Data>(&mut self, cb: F) -> Result<()> where
Data: Serialize + Deserialize<'de>,
Ser: Serialization<'de, Data>,
[src]
pub fn modify<'de, F: FnOnce(Data) -> Data>(&mut self, cb: F) -> Result<()> where
Data: Serialize + Deserialize<'de>,
Ser: Serialization<'de, Data>,
Modifies data via temporary serialization.
This method is useful when working with non-owned data as it is not possible to load and save in the same scope.
NOTE: In case of non-owned data it is valid only until the lifetime of callback execution.
pub fn save<'de>(&mut self, data: &Data) -> Result<()> where
Data: Serialize + Deserialize<'de>,
Ser: Serialization<'de, Data>,
[src]
pub fn save<'de>(&mut self, data: &Data) -> Result<()> where
Data: Serialize + Deserialize<'de>,
Ser: Serialization<'de, Data>,
Saves data to file and flushes.
It completely overwrites existing one.
pub fn save_async<'de>(&mut self, data: &Data) -> Result<()> where
Data: Serialize + Deserialize<'de>,
Ser: Serialization<'de, Data>,
[src]
pub fn save_async<'de>(&mut self, data: &Data) -> Result<()> where
Data: Serialize + Deserialize<'de>,
Ser: Serialization<'de, Data>,
Saves data to file and asynchronously flushes.
It completely overwrites existing one.