in guppy/src/graph/summaries/package_set.rs [666:724]
fn finish(self, graph: &PackageGraph, error_message: impl Into<String>) -> Result<(), Error> {
let mut unknown_summary_ids: Vec<_> = self
.summary_ids
.into_iter()
.filter_map(
|(summary_id, matched)| {
if matched {
None
} else {
Some(summary_id)
}
},
)
.cloned()
.collect();
unknown_summary_ids.sort_unstable();
let workspace = graph.workspace();
let unknown_workspace_members: Vec<_> = self
.workspace_members
.iter()
.filter_map(|member| {
if workspace.contains_name(member) {
None
} else {
Some(member.clone())
}
})
.collect();
let mut unknown_third_party: Vec<_> =
self.third_party
.into_iter()
.flat_map(|(_, summaries)| {
summaries.into_iter().filter_map(|(summary, matched)| {
if matched {
None
} else {
Some(summary.clone())
}
})
})
.collect();
unknown_third_party.sort_by(|x, y| x.name.cmp(&y.name));
if unknown_summary_ids.is_empty()
&& unknown_workspace_members.is_empty()
&& unknown_third_party.is_empty()
{
Ok(())
} else {
Err(UnknownPackageSetSummary {
message: error_message.into(),
unknown_summary_ids,
unknown_workspace_members,
unknown_third_party,
})
}
}