1use serde::{Deserialize, Serialize};
2
3use crate::{Capability, CapabilityFinding};
4
5#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, Eq)]
7pub struct CapabilityProfile {
8 pub findings: Vec<CapabilityFinding>,
10}
11
12impl CapabilityProfile {
13 pub fn capabilities(&self) -> Vec<Capability> {
16 let mut caps: Vec<Capability> = self.findings.iter().map(|f| f.capability).collect();
17 caps.sort();
18 caps.dedup();
19 caps
20 }
21
22 pub fn findings_for(&self, capability: Capability) -> Vec<&CapabilityFinding> {
24 self.findings
25 .iter()
26 .filter(|f| f.capability == capability)
27 .collect()
28 }
29}