dbc_rs/value_descriptions/
mod.rs

1mod core;
2
3#[cfg(feature = "std")]
4mod builder;
5
6use std::{string::String, vec::Vec};
7
8/// Value descriptions for a signal.
9///
10/// Maps numeric signal values to human-readable text descriptions.
11/// For example, a gear position signal might map:
12/// - 0 -> "Park"
13/// - 1 -> "Reverse"
14/// - 2 -> "Neutral"
15/// - 3 -> "Drive"
16///
17/// # Examples
18///
19/// ```rust,no_run
20/// use dbc_rs::Dbc;
21///
22/// let dbc_content = r#"VERSION "1.0"
23///
24/// BU_: ECM
25///
26/// BO_ 100 EngineData : 8 ECM
27///  SG_ GearPosition : 0|8@1+ (1,0) [0|5] "" *
28///
29/// VAL_ 100 GearPosition 0 "Park" 1 "Reverse" 2 "Neutral" 3 "Drive" ;
30/// "#;
31///
32/// let dbc = Dbc::parse(dbc_content)?;
33/// let message = dbc.messages().iter().find(|m| m.id() == 100).unwrap();
34/// let signal = message.signals().find("GearPosition").unwrap();
35///
36/// if let Some(value_descriptions) = dbc.value_descriptions_for_signal(message.id(), signal.name()) {
37///     if let Some(description) = value_descriptions.get(0) {
38///         println!("Value 0 means: {}", description);
39///     }
40/// }
41/// # Ok::<(), dbc_rs::Error>(())
42/// ```
43#[derive(Debug, Clone, PartialEq, Eq, Hash)]
44pub struct ValueDescriptions {
45    entries: Vec<(u64, String)>,
46}
47
48#[cfg(feature = "std")]
49pub use builder::ValueDescriptionsBuilder;