pub trait NodeConfig: Sized {
// Required methods
fn ports() -> Vec<Port>;
fn from_io(io: &NodeIo<'_>) -> Result<Self, NodeError>;
fn sanitize(self) -> Result<Sanitized<Self>, ConfigError>;
fn validate(&self) -> Result<(), ConfigError>;
// Provided method
fn metadata() -> BTreeMap<String, Value> { ... }
}Expand description
Trait implemented by config structs generated by #[derive(NodeConfig)].
use daedalus_runtime::config::{ConfigError, NodeConfig, Sanitized};
use daedalus_runtime::{NodeError};
use daedalus_runtime::io::NodeIo;
#[derive(Default)]
struct DemoConfig {
threshold: i64,
}
impl NodeConfig for DemoConfig {
fn ports() -> Vec<daedalus_registry::store::Port> { vec![] }
fn from_io(_io: &NodeIo) -> Result<Self, NodeError> { Ok(DemoConfig::default()) }
fn sanitize(self) -> Result<Sanitized<Self>, ConfigError> { Ok(Sanitized { value: self, changes: vec![] }) }
fn validate(&self) -> Result<(), ConfigError> { Ok(()) }
}
let cfg = DemoConfig::default();
cfg.validate().unwrap();Required Methods§
fn ports() -> Vec<Port>
fn from_io(io: &NodeIo<'_>) -> Result<Self, NodeError>
fn sanitize(self) -> Result<Sanitized<Self>, ConfigError>
fn validate(&self) -> Result<(), ConfigError>
Provided Methods§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.