pub trait Element: Send {
// Required methods
fn name(&self) -> Arc<str> ⓘ;
fn element_type(&self) -> ElementType;
fn pp_log(&self) -> &PpLog;
fn pp_log_mut(&mut self) -> &mut PpLog;
// Provided method
fn graph_id(&self) -> Option<ElementId> { ... }
}Expand description
A node in the pipeline graph with a name. Plain identity only — says nothing about whether the node has an input, an output, both, or neither.
Required Methods§
Sourcefn name(&self) -> Arc<str> ⓘ
fn name(&self) -> Arc<str> ⓘ
Returns a cheap clone (refcount bump, not a deep copy) of this
element’s name — crate::bus::BusEvent stores names as
Arc<str> for exactly this reason: a hot path like
crate::queue::Queue posting BusEvent::Dropped once per
overflowed buffer shouldn’t pay for a fresh heap allocation every
time it wants to report which element it is.
Sourcefn element_type(&self) -> ElementType
fn element_type(&self) -> ElementType
See ElementType.
Sourcefn pp_log(&self) -> &PpLog
fn pp_log(&self) -> &PpLog
This element’s identity for crate::bus::Bus::post — same
id/name as Element::name, just already wrapped as the
crate::pp_log::PpLog its pp_info!/pp_warn!/pp_error! macros need. A
stored private field, not built fresh per call, for the same reason
name() returns a cheap Arc<str> clone instead of a fresh String
— see its own docs.
Sourcefn pp_log_mut(&mut self) -> &mut PpLog
fn pp_log_mut(&mut self) -> &mut PpLog
Mutable access to the same field Element::pp_log reads — used by
crate::pipeline::ChainBuilder to stamp the owning
crate::pipeline::Pipeline’s id onto every element that
passes through it, via element_pp_log. Not meant to be called
from anywhere else.
Provided Methods§
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".