use serde::{Deserialize, Serialize};
use std::io::{Read, Write};
use std::path::Path;
use Result;
pub trait FromToml: for<'a> Deserialize<'a> {
fn from_toml_file<P: AsRef<Path>>(path: P) -> Result<Self> {
track!(::from_toml_file(path))
}
fn from_toml_reader<R: Read>(reader: R) -> Result<Self> {
track!(::from_toml_reader(reader))
}
fn from_toml_str(toml: &str) -> Result<Self> {
track!(::from_toml_str(toml))
}
fn from_toml_slice(toml: &[u8]) -> Result<Self> {
track!(::from_toml_slice(toml))
}
}
pub trait ToToml: Serialize {
fn to_toml_file<P: AsRef<Path>>(&self, path: P) -> Result<()> {
track!(::to_toml_file(self, path))
}
fn to_toml_writer<W: Write>(&self, writer: W) -> Result<()> {
track!(::to_toml_writer(self, writer))
}
fn to_toml_string(&self) -> Result<String> {
track!(::to_toml_string(self))
}
}
pub trait FromJson: for<'a> Deserialize<'a> {
fn from_json_file<P: AsRef<Path>>(path: P) -> Result<Self> {
track!(::from_json_file(path))
}
fn from_json_reader<R: Read>(reader: R) -> Result<Self> {
track!(::from_json_reader(reader))
}
fn from_json_str(json: &str) -> Result<Self> {
track!(::from_json_str(json))
}
fn from_json_slice(json: &[u8]) -> Result<Self> {
track!(::from_json_slice(json))
}
}
pub trait ToJson: Serialize {
fn to_json_file<P: AsRef<Path>>(&self, path: P) -> Result<()> {
track!(::to_json_file(self, path))
}
fn to_json_writer<W: Write>(&self, writer: W) -> Result<()> {
track!(::to_json_writer(self, writer))
}
fn to_json_writer_pretty<W: Write>(&self, writer: W) -> Result<()> {
track!(::to_json_writer_pretty(self, writer))
}
fn to_json_string(&self) -> Result<String> {
track!(::to_json_string(self))
}
fn to_json_string_pretty(&self) -> Result<String> {
track!(::to_json_string_pretty(self))
}
}
pub trait FromMsgPack: for<'a> Deserialize<'a> {
fn from_msgpack_file<P: AsRef<Path>>(path: P) -> Result<Self> {
track!(::from_msgpack_file(path))
}
fn from_msgpack_reader<R: Read>(reader: R) -> Result<Self> {
track!(::from_msgpack_reader(reader))
}
fn from_msgpack_slice(toml: &[u8]) -> Result<Self> {
track!(::from_msgpack_slice(toml))
}
}
pub trait ToMsgPack: Serialize {
fn to_msgpack_file<P: AsRef<Path>>(&self, path: P) -> Result<()> {
track!(::to_msgpack_file(self, path))
}
fn to_msgpack_writer<W: Write>(&self, writer: W) -> Result<()> {
track!(::to_msgpack_writer(self, writer))
}
fn to_msgpack_vec(&self) -> Result<Vec<u8>> {
track!(::to_msgpack_vec(self))
}
}