radiate_engines/steps/
audit.rs

1use 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}