pub fn dependency_version_map(
pr: &dyn ParseResult,
) -> HashMap<PackageName, Vec<Option<VersionReq>>>Expand description
Builds name -> [version_requirement, ...] for every dependency in pr, one entry per
occurrence — the shape DependencyDiff::compute needs.
A HashMap<PackageName, Option<VersionReq>> (single value per name) would silently
collapse a duplicate name to its last occurrence, losing any edit made to an earlier one
(#394).
Occurrence order is whatever pr.dependencies() returns, which for
deps-cargo is not document order for multiple [target.*] blocks
(see DependencyDiff::compute’s doc). A consequence worth knowing: if
an edit only renames a [target.'cfg(...)'.dependencies] expression
(no version change), that occurrence can sort into a different position
in the new Vec than the old one, so old.get(name) != new.get(name)
trips even though every individual version requirement is unchanged —
a spurious but harmless version_changed (one extra registry
refetch/OSV rescan for that name, never a missed or misattributed one).
§Examples
use deps_core::PackageName;
use deps_core::test_util::stub_parse_result_with_dependencies;
use deps_engine::classify::resolved::dependency_version_map;
let parsed = stub_parse_result_with_dependencies(2);
let map = dependency_version_map(parsed.as_ref());
assert_eq!(map.len(), 2);
assert_eq!(map.get(&PackageName::new("dep-0")), Some(&vec![None]));