pub struct EvaluatorRegistry { /* private fields */ }Expand description
Global registry of condition evaluators.
Evaluators are registered at startup (typically from generated code) and looked up at runtime based on the detected message type and format version.
Thread-safe: uses RwLock for concurrent read access with exclusive
write access during registration.
Implementations§
Source§impl EvaluatorRegistry
impl EvaluatorRegistry
Sourcepub fn register<E: ConditionEvaluator + 'static>(&self, evaluator: E)
pub fn register<E: ConditionEvaluator + 'static>(&self, evaluator: E)
Register a condition evaluator for a message type and format version.
Overwrites any previously registered evaluator for the same key.
Sourcepub fn register_as<E: ConditionEvaluator + 'static>(
&self,
evaluator: E,
message_type: &str,
format_version: &str,
)
pub fn register_as<E: ConditionEvaluator + 'static>( &self, evaluator: E, message_type: &str, format_version: &str, )
Register a condition evaluator under a custom key, overriding the
evaluator’s own message_type() and format_version().
Useful for type aliases where the underlying evaluator reports a different format version than the one we want to register under.
Sourcepub fn register_arc(&self, evaluator: Arc<dyn ConditionEvaluator>)
pub fn register_arc(&self, evaluator: Arc<dyn ConditionEvaluator>)
Register an already-Arc’d evaluator.
Sourcepub fn get(
&self,
message_type: &str,
format_version: &str,
) -> Option<Arc<dyn ConditionEvaluator>>
pub fn get( &self, message_type: &str, format_version: &str, ) -> Option<Arc<dyn ConditionEvaluator>>
Look up an evaluator by message type and format version.
Returns None if no evaluator is registered for the given key.
Sourcepub fn get_or_err(
&self,
message_type: &str,
format_version: &str,
) -> Result<Arc<dyn ConditionEvaluator>, ValidationError>
pub fn get_or_err( &self, message_type: &str, format_version: &str, ) -> Result<Arc<dyn ConditionEvaluator>, ValidationError>
Look up an evaluator, returning an error if not found.
Sourcepub fn registered_keys(&self) -> Vec<(String, String)>
pub fn registered_keys(&self) -> Vec<(String, String)>
List all registered (message_type, format_version) keys.