winer 0.1.5

Inspect Wine runtimes, host OS details, and hosted processes
Documentation
#![cfg(feature = "serde")]

use serde::{Deserialize, Deserializer, Serialize, Serializer};

pub mod windows_pathbuf {
    use super::*;
    use typed_path::WindowsPathBuf;

    pub fn serialize<S>(path: &WindowsPathBuf, serializer: S) -> Result<S::Ok, S::Error>
    where
        S: Serializer,
    {
        path.to_str().serialize(serializer)
    }

    pub fn deserialize<'de, D>(deserializer: D) -> Result<WindowsPathBuf, D::Error>
    where
        D: Deserializer<'de>,
    {
        let s = String::deserialize(deserializer)?;
        Ok(WindowsPathBuf::from(s))
    }
}

pub mod windows_pathbuf_vec {
    use super::*;
    use typed_path::WindowsPathBuf;

    pub fn serialize<S>(paths: &Vec<WindowsPathBuf>, serializer: S) -> Result<S::Ok, S::Error>
    where
        S: Serializer,
    {
        let strs: Vec<_> = paths.iter().map(|p| p.to_str()).collect();
        strs.serialize(serializer)
    }

    pub fn deserialize<'de, D>(deserializer: D) -> Result<Vec<WindowsPathBuf>, D::Error>
    where
        D: Deserializer<'de>,
    {
        let strs = Vec::<String>::deserialize(deserializer)?;
        Ok(strs.into_iter().map(WindowsPathBuf::from).collect())
    }
}