oasiscap 0.2.0

Types for the OASIS Common Alerting Protocol (CAP)
Documentation
use super::ValuePair;

impl<E: crate::map::Entry> From<Vec<ValuePair>> for crate::map::Map<E> {
    fn from(value: Vec<ValuePair>) -> Self {
        value
            .into_iter()
            .map(|pair| (pair.value_name, pair.value))
            .collect()
    }
}

impl<E: crate::map::Entry> From<crate::map::Map<E>> for Vec<ValuePair> {
    fn from(value: crate::map::Map<E>) -> Self {
        value
            .into_iter()
            .map(|(value_name, value)| ValuePair { value_name, value })
            .collect()
    }
}

impl TryFrom<Vec<ValuePair>> for crate::v1dot0::Map {
    type Error = crate::v1dot0::map::InvalidKeyError;

    fn try_from(value: Vec<ValuePair>) -> Result<Self, Self::Error> {
        value
            .into_iter()
            .map(|pair| {
                crate::v1dot0::map::Key::try_from(pair.value_name).map(|key| (key, pair.value))
            })
            .collect()
    }
}

impl From<crate::v1dot0::Map> for Vec<ValuePair> {
    fn from(value: crate::v1dot0::Map) -> Self {
        value
            .into_iter()
            .map(|(value_name, value)| ValuePair {
                value_name: value_name.into(),
                value,
            })
            .collect()
    }
}