@@ -165,7 +165,12 @@ pub fn update_lockfile(ws: &Workspace<'_>, opts: &UpdateOptions<'_>) -> CargoRes
165
165
opts. config . shell ( ) . status_with_color ( status, msg, color)
166
166
} ;
167
167
let mut unchanged_behind = 0 ;
168
- for ( removed, added, unchanged) in compare_dependency_graphs ( & previous_resolve, & resolve) {
168
+ for ResolvedPackageVersions {
169
+ removed,
170
+ added,
171
+ unchanged,
172
+ } in compare_dependency_graphs ( & previous_resolve, & resolve)
173
+ {
169
174
fn format_latest ( version : semver:: Version ) -> String {
170
175
let warn = style:: WARN ;
171
176
format ! ( " {warn}(latest: v{version}){warn:#}" )
@@ -314,10 +319,16 @@ pub fn update_lockfile(ws: &Workspace<'_>, opts: &UpdateOptions<'_>) -> CargoRes
314
319
}
315
320
}
316
321
322
+ #[ derive( Default , Clone , Debug ) ]
323
+ struct ResolvedPackageVersions {
324
+ removed : Vec < PackageId > ,
325
+ added : Vec < PackageId > ,
326
+ unchanged : Vec < PackageId > ,
327
+ }
317
328
fn compare_dependency_graphs (
318
329
previous_resolve : & Resolve ,
319
330
resolve : & Resolve ,
320
- ) -> Vec < ( Vec < PackageId > , Vec < PackageId > , Vec < PackageId > ) > {
331
+ ) -> Vec < ResolvedPackageVersions > {
321
332
fn key ( dep : PackageId ) -> ( & ' static str , SourceId ) {
322
333
( dep. name ( ) . as_str ( ) , dep. source_id ( ) )
323
334
}
@@ -359,24 +370,28 @@ pub fn update_lockfile(ws: &Workspace<'_>, opts: &UpdateOptions<'_>) -> CargoRes
359
370
360
371
// Map `(package name, package source)` to `(removed versions, added versions)`.
361
372
let mut changes = BTreeMap :: new ( ) ;
362
- let empty = ( Vec :: new ( ) , Vec :: new ( ) , Vec :: new ( ) ) ;
373
+ let empty = ResolvedPackageVersions :: default ( ) ;
363
374
for dep in previous_resolve. iter ( ) {
364
375
changes
365
376
. entry ( key ( dep) )
366
377
. or_insert_with ( || empty. clone ( ) )
367
- . 0
378
+ . removed
368
379
. push ( dep) ;
369
380
}
370
381
for dep in resolve. iter ( ) {
371
382
changes
372
383
. entry ( key ( dep) )
373
384
. or_insert_with ( || empty. clone ( ) )
374
- . 1
385
+ . added
375
386
. push ( dep) ;
376
387
}
377
388
378
389
for v in changes. values_mut ( ) {
379
- let ( ref mut old, ref mut new, ref mut other) = * v;
390
+ let ResolvedPackageVersions {
391
+ removed : ref mut old,
392
+ added : ref mut new,
393
+ unchanged : ref mut other,
394
+ } = * v;
380
395
old. sort ( ) ;
381
396
new. sort ( ) ;
382
397
let removed = vec_subset ( old, new) ;
0 commit comments