use std::path::Path; use serde::{Serialize, Deserialize, Deserializer}; use crate::Id; #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize)] pub struct HealthCheckId = String>(Id); impl> std::fmt::Display for HealthCheckId { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { write!(f, "{}", &self.0) } } impl> AsRef for HealthCheckId { fn as_ref(&self) -> &str { self.0.as_ref() } } impl<'de, S> Deserialize<'de> for HealthCheckId where S: AsRef, Id: Deserialize<'de>, { fn deserialize(deserializer: D) -> Result where D: Deserializer<'de>, { Ok(HealthCheckId(Deserialize::deserialize(deserializer)?)) } } impl> AsRef for HealthCheckId { fn as_ref(&self) -> &Path { self.0.as_ref().as_ref() } }