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) -> Box<[&CapabilityFinding]> {
self.findings
.iter()
.filter(|f| f.capability == capability)
.collect::<Vec<_>>()
.into_boxed_slice()
}
}