can_dbc/ast/
byte_order.rs1use can_dbc_pest::{Pair, Rule};
2
3use crate::DbcError;
4
5#[derive(Copy, Clone, Debug, PartialEq)]
6#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
7pub enum ByteOrder {
8 LittleEndian,
9 BigEndian,
10}
11
12impl TryFrom<Pair<'_, Rule>> for ByteOrder {
13 type Error = DbcError;
14
15 fn try_from(value: Pair<'_, Rule>) -> Result<Self, Self::Error> {
16 match value.as_rule() {
17 Rule::little_endian => Ok(Self::LittleEndian),
18 Rule::big_endian => Ok(Self::BigEndian),
19 v => Err(DbcError::UnknownRule(v)),
20 }
21 }
22}
23
24#[cfg(test)]
25mod tests {
26 use super::*;
27 use crate::test_helpers::*;
28
29 #[test]
30 fn byte_order_test() {
31 let val = test_into::<ByteOrder>("0", Rule::big_endian);
32 assert_eq!(val, ByteOrder::BigEndian);
33
34 let val = test_into::<ByteOrder>("1", Rule::little_endian);
35 assert_eq!(val, ByteOrder::LittleEndian);
36 }
37}