radiate_engines/steps/
audit.rs1use radiate_core::{Audit, Chromosome, Ecosystem, EngineStep, MetricSet};
2use std::sync::Arc;
3
4pub struct AuditStep<C>
5where
6 C: Chromosome,
7{
8 pub(crate) audits: Vec<Arc<dyn Audit<C>>>,
9}
10
11impl<C> EngineStep<C> for AuditStep<C>
12where
13 C: Chromosome,
14{
15 fn execute(
16 &mut self,
17 generation: usize,
18 metrics: &mut MetricSet,
19 ecosystem: &mut Ecosystem<C>,
20 ) {
21 for audit in &self.audits {
22 for metric in audit.audit(generation, &ecosystem) {
23 metrics.upsert(metric);
24 }
25 }
26 }
27}