Skip to main content

rscheck_cli/
emit.rs

1use crate::report::{FileMetrics, Finding};
2
3pub trait Emitter {
4    fn emit(&mut self, finding: Finding);
5
6    fn record_metrics(&mut self, _metrics: FileMetrics) {}
7}
8
9#[derive(Default)]
10pub struct ReportEmitter {
11    pub findings: Vec<Finding>,
12    pub metrics: Vec<FileMetrics>,
13}
14
15impl ReportEmitter {
16    #[must_use]
17    pub fn new() -> Self {
18        Self {
19            findings: Vec::new(),
20            metrics: Vec::new(),
21        }
22    }
23}
24
25impl Emitter for ReportEmitter {
26    fn emit(&mut self, finding: Finding) {
27        self.findings.push(finding);
28    }
29
30    fn record_metrics(&mut self, metrics: FileMetrics) {
31        self.metrics.push(metrics);
32    }
33}