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}