INNER CODE UNIT · Rust
exposure_changes
Symph0nia/CyberEdge · src/repository/mod.rs:321
fn exposure_changes(
task: &Task,
previous: &BTreeMap<String, ExposureState>,
current: &BTreeMap<String, ExposureState>,
timestamp: prost_types::Timestamp,
include_disappeared: bool,
) -> Vec<ExposureChange> {
let keys = previous
.keys()
.chain(current.keys())
.cloned()
.collect::<BTreeSet<_>>();
keys.into_iter()
.filter_map(|resource_id| {
let before = previous.get(&resource_id);
let after = current.get(&resource_id);
let kind = match (before, after) {
(None, Some(_)) => crate::proto::ExposureChangeKind::Appeared,