use std::collections::HashMap;
use std::io;
use super::{Entry, IndexKey};
pub trait SettingsBackend: Send + Sync {
fn get(&self, appname: &str, section: &str, key: &str) -> Option<String>;
fn set(&self, appname: &str, section: &str, key: &str, value: &str) -> io::Result<()>;
fn remove_key(&self, appname: &str, section: &str, key: &str) -> io::Result<()>;
fn remove_section(&self, appname: &str, section: &str) -> io::Result<()>;
fn remove_appname(&self, appname: &str) -> io::Result<()>;
fn get_all(&self, appname: &str, section: &str) -> Vec<(String, String)>;
fn entries(&self) -> Vec<(String, String, String, String)>;
fn load_all(&self) -> HashMap<IndexKey, Entry>;
}