tcrm-task 0.4.2

Task execution unit for TCRM project
Documentation
#[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),
    }
}