#[cfg(all(unix, feature = "serde"))]
pub(crate) fn serialize_signal<S>(
signal: &Option<nix::sys::signal::Signal>,
serializer: S,
) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
match signal {
Some(sig) => serializer.serialize_some(&(*sig as i32)),
None => serializer.serialize_none(),
}
}
#[cfg(all(unix, feature = "serde"))]
pub(crate) fn deserialize_signal<'de, D>(
deserializer: D,
) -> Result<Option<nix::sys::signal::Signal>, D::Error>
where
D: serde::Deserializer<'de>,
{
use serde::Deserialize;
let signal_num: Option<i32> = Option::deserialize(deserializer)?;
match signal_num {
Some(num) => nix::sys::signal::Signal::try_from(num)
.map(Some)
.map_err(serde::de::Error::custom),
None => Ok(None),
}
}