solar_interface/diagnostics/emitter/
mem.rs1use crate::diagnostics::{Diag, Emitter};
2use solar_data_structures::sync::RwLock;
3use std::sync::Arc;
4
5pub struct InMemoryEmitter {
14 buffer: Arc<RwLock<Vec<Diag>>>,
15}
16
17impl InMemoryEmitter {
18 pub fn new() -> (Self, Arc<RwLock<Vec<Diag>>>) {
20 let buffer = Default::default();
21 (Self { buffer: Arc::clone(&buffer) }, buffer)
22 }
23}
24
25impl Emitter for InMemoryEmitter {
26 fn emit_diagnostic(&mut self, diagnostic: &mut crate::diagnostics::Diag) {
27 self.buffer.write().push(diagnostic.clone());
28 }
29}