#![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())
}
}