can-dbc 9.0.0

A parser for the DBC format. The DBC format is used to exchange CAN network data.
Documentation
use can_dbc_pest::{Pair, Rule};

use crate::parser::{validated, DbcError};

// TODO: consider merging with AccessNode

#[derive(Clone, Debug, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum Transmitter {
    /// node transmitting the message
    NodeName(String),
    /// message has no sender
    VectorXXX,
}

impl TryFrom<Pair<'_, Rule>> for Transmitter {
    type Error = DbcError;

    fn try_from(value: Pair<'_, Rule>) -> Result<Self, Self::Error> {
        let value = validated(value, Rule::transmitter)?.as_str();
        Ok(if value == "Vector__XXX" {
            Self::VectorXXX
        } else {
            Self::NodeName(value.to_string())
        })
    }
}