can_dbc/ast/
access_node.rs

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