webdav 0.1.0

Types for WebDAV
Documentation
#![warn(warnings)]

mod header;
mod method;
mod result;
mod status;

pub use header::Header;
pub use method::Method;
pub use result::*;
pub use status::StatusCode;

pub trait ToXml: std::fmt::Debug {
    fn to_xml(&self) -> String;
}

impl<T: ToXml> ToXml for Option<T> {
    fn to_xml(&self) -> String {
        self.as_ref().map(ToXml::to_xml).unwrap_or_default()
    }
}

impl ToXml for Vec<Box<dyn ToXml>> {
    fn to_xml(&self) -> String {
        self.iter().map(|x| x.to_xml()).collect::<Vec<_>>().join("")
    }
}

impl<T: ToXml> ToXml for Vec<T> {
    fn to_xml(&self) -> String {
        self.iter().map(|x| x.to_xml()).collect::<Vec<_>>().join("")
    }
}