1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
use serde::{Deserialize, Serialize}; mod de; pub mod error; pub mod parse; mod ser; #[cfg(test)] mod tests; pub mod value; pub use self::value::{Call, Fault, Params, Response, Value}; pub fn from_params<'a, T: Deserialize<'a>>(mut params: Params) -> error::Result<T> { use self::error::ResultExt; let data = if params.len() == 1 { params.pop().unwrap() } else { Value::Array(params) }; T::deserialize(data).chain_err(|| "Failed to convert XML-RPC to structure.") } pub fn into_params<T: Serialize>(v: &T) -> error::Result<Params> { Ok(match v.serialize(ser::Serializer {})? { Value::Array(params) => params, data => vec![data], }) }