Skip to content

Commit 619238e

Browse files
committed
refactor(lockfile): Pull out dep change detection
1 parent 9e18941 commit 619238e

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

src/cargo/ops/cargo_generate_lockfile.rs

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -202,10 +202,7 @@ fn print_lockfile_update(
202202
vec![]
203203
};
204204

205-
if diff.removed.len() == 1 && diff.added.len() == 1 {
206-
let added = diff.added.into_iter().next().unwrap();
207-
let removed = diff.removed.into_iter().next().unwrap();
208-
205+
if let Some((removed, added)) = diff.change() {
209206
let latest = if !possibilities.is_empty() {
210207
possibilities
211208
.iter()
@@ -400,6 +397,19 @@ impl PackageDiff {
400397
changes.into_iter().map(|(_, v)| v).collect()
401398
}
402399

400+
/// Guess if a package upgraded/downgraded
401+
///
402+
/// All `PackageDiff` knows is that entries were added/removed within [`Resolve`].
403+
/// A package could be added or removed because of dependencies from other packages
404+
/// which makes it hard to definitively say "X was upgrade to N".
405+
pub fn change(&self) -> Option<(&PackageId, &PackageId)> {
406+
if self.removed.len() == 1 && self.added.len() == 1 {
407+
Some((&self.removed[0], &self.added[0]))
408+
} else {
409+
None
410+
}
411+
}
412+
403413
/// For querying [`PackageRegistry`] for alternative versions to report to the user
404414
pub fn alternatives_query(&self) -> Option<crate::core::dependency::Dependency> {
405415
let package_id = [

0 commit comments

Comments
 (0)