pub struct ReceiversBuilder { /* private fields */ }Expand description
Builder for creating Receivers programmatically.
This builder allows you to construct receiver configurations for signals when building DBC files programmatically.
§Examples
use dbc_rs::{ReceiversBuilder, SignalBuilder, ByteOrder};
// Broadcast receiver
let broadcast = ReceiversBuilder::new().broadcast().build()?;
// Specific nodes
let specific = ReceiversBuilder::new()
.add_node("TCM")
.add_node("BCM")
.build()?;
// No receivers
let none = ReceiversBuilder::new().none().build()?;
// Use with signal builder
let signal = SignalBuilder::new()
.name("RPM")
.start_bit(0)
.length(16)
.byte_order(ByteOrder::BigEndian)
.unsigned(true)
.factor(0.25)
.offset(0.0)
.min(0.0)
.max(8000.0)
.receivers(ReceiversBuilder::new().add_node("TCM").add_node("BCM"))
.build()?;§Feature Requirements
This builder requires the std feature to be enabled.
Implementations§
Source§impl ReceiversBuilder
impl ReceiversBuilder
Sourcepub fn new() -> Self
pub fn new() -> Self
Creates a new ReceiversBuilder with default settings (no receivers).
§Examples
use dbc_rs::ReceiversBuilder;
let builder = ReceiversBuilder::new();
let receivers = builder.build()?;
assert_eq!(receivers.len(), 0);Sourcepub fn broadcast(self) -> Self
pub fn broadcast(self) -> Self
Sets the receiver to broadcast (* in DBC format).
This clears any previously set nodes and sets the receiver to broadcast mode.
§Examples
use dbc_rs::ReceiversBuilder;
let receivers = ReceiversBuilder::new()
.add_node("TCM") // This will be cleared
.broadcast()
.build()?;
assert_eq!(receivers, dbc_rs::Receivers::Broadcast);Sourcepub fn none(self) -> Self
pub fn none(self) -> Self
Sets the receiver to none (no explicit receivers).
This clears any previously set nodes and sets the receiver to none mode.
§Examples
use dbc_rs::ReceiversBuilder;
let receivers = ReceiversBuilder::new()
.add_node("TCM") // This will be cleared
.none()
.build()?;
assert_eq!(receivers, dbc_rs::Receivers::None);Sourcepub fn add_node(self, node: impl AsRef<str>) -> Self
pub fn add_node(self, node: impl AsRef<str>) -> Self
Adds a single receiver node.
This automatically clears broadcast and none modes, switching to specific nodes mode.
§Arguments
node- The node name (anything that implementsAsRef<str>)
§Examples
use dbc_rs::ReceiversBuilder;
let receivers = ReceiversBuilder::new()
.add_node("TCM")
.add_node("BCM")
.build()?;
assert_eq!(receivers.len(), 2);
assert!(receivers.contains("TCM"));Sourcepub fn add_nodes<I, S>(self, nodes: I) -> Self
pub fn add_nodes<I, S>(self, nodes: I) -> Self
Adds multiple receiver nodes from an iterator.
This automatically clears broadcast and none modes, switching to specific nodes mode.
§Arguments
nodes- An iterator of node names (each item must implementAsRef<str>)
§Examples
use dbc_rs::ReceiversBuilder;
// From a slice
let receivers = ReceiversBuilder::new()
.add_nodes(&["TCM", "BCM", "ECM"])
.build()?;
assert_eq!(receivers.len(), 3);
// From a vector
let node_vec = vec!["Node1", "Node2"];
let receivers2 = ReceiversBuilder::new()
.add_nodes(node_vec.iter())
.build()?;
assert_eq!(receivers2.len(), 2);Sourcepub fn clear(self) -> Self
pub fn clear(self) -> Self
Clears all receiver nodes and resets to default state (none).
§Examples
use dbc_rs::ReceiversBuilder;
let receivers = ReceiversBuilder::new()
.add_node("TCM")
.add_node("BCM")
.clear()
.add_node("ECM")
.build()?;
assert_eq!(receivers.len(), 1);
assert!(receivers.contains("ECM"));
assert!(!receivers.contains("TCM"));Source§impl ReceiversBuilder
impl ReceiversBuilder
Sourcepub fn build(&self) -> Result<Receivers>
pub fn build(&self) -> Result<Receivers>
Builds the Receivers from the builder configuration.
§Returns
Returns Ok(Receivers) if successful, or Err(Error::Signal) if:
- More than 64 receiver nodes are specified (exceeds maximum limit)
§Examples
use dbc_rs::ReceiversBuilder;
// Broadcast
let broadcast = ReceiversBuilder::new().broadcast().build()?;
// Specific nodes
let nodes = ReceiversBuilder::new()
.add_node("TCM")
.add_node("BCM")
.build()?;
// None (default)
let none = ReceiversBuilder::new().build()?;§Errors
use dbc_rs::ReceiversBuilder;
// Too many nodes (limit is 64)
let mut builder = ReceiversBuilder::new();
for i in 0..65 {
builder = builder.add_node(format!("Node{i}"));
}
assert!(builder.build().is_err());Trait Implementations§
Source§impl Clone for ReceiversBuilder
impl Clone for ReceiversBuilder
Source§fn clone(&self) -> ReceiversBuilder
fn clone(&self) -> ReceiversBuilder
1.0.0§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ReceiversBuilder
impl Debug for ReceiversBuilder
Auto Trait Implementations§
impl Freeze for ReceiversBuilder
impl RefUnwindSafe for ReceiversBuilder
impl Send for ReceiversBuilder
impl Sync for ReceiversBuilder
impl Unpin for ReceiversBuilder
impl UnwindSafe for ReceiversBuilder
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
clone_to_uninit)