use serde::{Deserialize, Serialize};
use crate::{Capability, CapabilityFinding};
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, Eq)]
pub struct CapabilityProfile {
pub findings: Box<[CapabilityFinding]>,
}
impl CapabilityProfile {
pub fn capabilities(&self) -> Box<[Capability]> {
let mut caps: Vec<Capability> = self.findings.iter().map(|f| f.capability).collect();
caps.sort();
caps.dedup();
caps.into_boxed_slice()
}
pub fn findings_for(&self, capability: Capability) -> impl Iterator<Item = &CapabilityFinding> {
self.findings
.iter()
.filter(move |f| f.capability == capability)
}
}