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.
Per DBC specification Section 9.5, valid receivers are:
- Specific node names (comma-separated in DBC output)
Vector__XXXfor no specific receiver (represented asReceivers::None)
§Examples
use dbc_rs::{ReceiversBuilder, SignalBuilder, ByteOrder};
// Specific nodes
let specific = ReceiversBuilder::new()
.add_node("TCM")
.add_node("BCM")
.build()?;
// No receivers (serializes as Vector__XXX)
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 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;
// Specific nodes
let nodes = ReceiversBuilder::new()
.add_node("TCM")
.add_node("BCM")
.build()?;
// None (default - serializes as Vector__XXX)
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());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 none(self) -> Self
pub fn none(self) -> Self
Sets the receiver to none (no explicit receivers).
This clears any previously set nodes. Per DBC spec, this will
serialize as Vector__XXX (no specific receiver).
§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_nodes<I, S>(self, nodes: I) -> Self
pub fn add_nodes<I, S>(self, nodes: I) -> Self
Adds multiple receiver nodes from an iterator.
§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"));Trait Implementations§
Source§impl Clone for ReceiversBuilder
impl Clone for ReceiversBuilder
Source§fn clone(&self) -> ReceiversBuilder
fn clone(&self) -> ReceiversBuilder
Returns a duplicate of the value. Read more
1.0.0§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
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
Mutably borrows from an owned value. Read more
§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)
🔬This is a nightly-only experimental API. (
clone_to_uninit)