pub struct Signals<'a> { /* private fields */ }Expand description
Encapsulates the signals array and count for a message
Storage strategy:
no_std: Uses fixed-size array[Option<Signal>; MAX_SIGNALS_PER_MESSAGE]alloc: Uses heap-allocatedBox<[Option<Signal>]>for dynamic sizing
Implementations§
Source§impl<'a> Signals<'a>
impl<'a> Signals<'a>
Sourcepub fn iter(&self) -> impl Iterator<Item = &Signal<'a>> + '_
pub fn iter(&self) -> impl Iterator<Item = &Signal<'a>> + '_
Get an iterator over the signals
§Examples
use dbc_rs::Dbc;
let dbc = Dbc::parse("VERSION \"1.0\"\n\nBU_: ECM\n\nBO_ 256 Engine : 8 ECM\n SG_ RPM : 0|16@1+ (0.25,0) [0|8000] \"rpm\"")?;
let message = dbc.messages().at(0).unwrap();
for signal in message.signals().iter() {
println!("Signal: {} (start: {}, length: {})", signal.name(), signal.start_bit(), signal.length());
}Sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
Get the number of signals
§Examples
use dbc_rs::Dbc;
let dbc = Dbc::parse("VERSION \"1.0\"\n\nBU_: ECM\n\nBO_ 256 Engine : 8 ECM\n SG_ RPM : 0|16@1+ (0.25,0) [0|8000] \"rpm\"")?;
let message = dbc.messages().at(0).unwrap();
assert_eq!(message.signals().len(), 1);Sourcepub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
Returns true if there are no signals
§Examples
use dbc_rs::Dbc;
let dbc = Dbc::parse("VERSION \"1.0\"\n\nBU_: ECM\n\nBO_ 256 Engine : 8 ECM")?;
let message = dbc.messages().at(0).unwrap();
assert!(message.signals().is_empty());Sourcepub fn at(&self, index: usize) -> Option<&Signal<'a>>
pub fn at(&self, index: usize) -> Option<&Signal<'a>>
Get a signal by index, or None if index is out of bounds
§Examples
use dbc_rs::Dbc;
let dbc = Dbc::parse("VERSION \"1.0\"\n\nBU_: ECM\n\nBO_ 256 Engine : 8 ECM\n SG_ RPM : 0|16@1+ (0.25,0) [0|8000] \"rpm\"")?;
let message = dbc.messages().at(0).unwrap();
if let Some(signal) = message.signals().at(0) {
println!("First signal: {}", signal.name());
}Sourcepub fn find(&self, name: &str) -> Option<&Signal<'a>>
pub fn find(&self, name: &str) -> Option<&Signal<'a>>
Find a signal by name, or None if not found
§Examples
use dbc_rs::Dbc;
let dbc = Dbc::parse("VERSION \"1.0\"\n\nBU_: ECM\n\nBO_ 256 Engine : 8 ECM\n SG_ RPM : 0|16@1+ (0.25,0) [0|8000] \"rpm\"")?;
let message = dbc.messages().at(0).unwrap();
if let Some(signal) = message.signals().find("RPM") {
println!("Found RPM signal with factor: {}", signal.factor());
}Trait Implementations§
impl<'a> Eq for Signals<'a>
impl<'a> StructuralPartialEq for Signals<'a>
Auto Trait Implementations§
impl<'a> Freeze for Signals<'a>
impl<'a> RefUnwindSafe for Signals<'a>
impl<'a> Send for Signals<'a>
impl<'a> Sync for Signals<'a>
impl<'a> Unpin for Signals<'a>
impl<'a> UnwindSafe for Signals<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more