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