can_dbc/ast/
transmitter.rs

1use can_dbc_pest::{Pair, Rule};
2
3use crate::parser::{validated, DbcError};
4
5// TODO: consider merging with AccessNode
6
7#[derive(Clone, Debug, PartialEq)]
8#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
9pub enum Transmitter {
10    /// node transmitting the message
11    NodeName(String),
12    /// message has no sender
13    VectorXXX,
14}
15
16impl TryFrom<Pair<'_, Rule>> for Transmitter {
17    type Error = DbcError;
18
19    fn try_from(value: Pair<'_, Rule>) -> Result<Self, Self::Error> {
20        let value = validated(value, Rule::transmitter)?.as_str();
21        Ok(if value == "Vector__XXX" {
22            Self::VectorXXX
23        } else {
24            Self::NodeName(value.to_string())
25        })
26    }
27}