Skip to content

Commit 0e2a524

Browse files
committed
refactor(update): Move the allocation out of PackageDiff
1 parent 8f40fc5 commit 0e2a524

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

src/cargo/ops/cargo_update.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -491,7 +491,7 @@ fn print_lockfile_generation(
491491
resolve: &Resolve,
492492
registry: &mut PackageRegistry<'_>,
493493
) -> CargoResult<()> {
494-
let diff = PackageDiff::new(&resolve);
494+
let diff: Vec<_> = PackageDiff::new(&resolve).collect();
495495
let num_pkgs: usize = diff.iter().map(|d| d.added.len()).sum();
496496
if num_pkgs <= 1 {
497497
// just ourself, nothing worth reporting
@@ -537,7 +537,7 @@ fn print_lockfile_sync(
537537
resolve: &Resolve,
538538
registry: &mut PackageRegistry<'_>,
539539
) -> CargoResult<()> {
540-
let diff = PackageDiff::diff(&previous_resolve, &resolve);
540+
let diff: Vec<_> = PackageDiff::diff(&previous_resolve, &resolve).collect();
541541
let num_pkgs: usize = diff.iter().map(|d| d.added.len()).sum();
542542
if num_pkgs == 0 {
543543
return Ok(());
@@ -619,7 +619,7 @@ fn print_lockfile_updates(
619619
precise: bool,
620620
registry: &mut PackageRegistry<'_>,
621621
) -> CargoResult<()> {
622-
let diff = PackageDiff::diff(&previous_resolve, &resolve);
622+
let diff: Vec<_> = PackageDiff::diff(&previous_resolve, &resolve).collect();
623623
let num_pkgs: usize = diff.iter().map(|d| d.added.len()).sum();
624624
if !precise {
625625
status_locking(ws, num_pkgs)?;
@@ -836,7 +836,7 @@ pub struct PackageDiff {
836836
}
837837

838838
impl PackageDiff {
839-
pub fn new(resolve: &Resolve) -> Vec<Self> {
839+
pub fn new(resolve: &Resolve) -> impl Iterator<Item = Self> {
840840
let mut changes = BTreeMap::new();
841841
let empty = Self::default();
842842
for dep in resolve.iter() {
@@ -847,10 +847,10 @@ impl PackageDiff {
847847
.push(dep);
848848
}
849849

850-
changes.into_iter().map(|(_, v)| v).collect()
850+
changes.into_iter().map(|(_, v)| v)
851851
}
852852

853-
pub fn diff(previous_resolve: &Resolve, resolve: &Resolve) -> Vec<Self> {
853+
pub fn diff(previous_resolve: &Resolve, resolve: &Resolve) -> impl Iterator<Item = Self> {
854854
fn vec_subset(a: &[PackageId], b: &[PackageId]) -> Vec<PackageId> {
855855
a.iter().filter(|a| !contains_id(b, a)).cloned().collect()
856856
}
@@ -921,7 +921,7 @@ impl PackageDiff {
921921
}
922922
debug!("{:#?}", changes);
923923

924-
changes.into_iter().map(|(_, v)| v).collect()
924+
changes.into_iter().map(|(_, v)| v)
925925
}
926926

927927
fn key(dep: PackageId) -> (&'static str, SourceId) {

0 commit comments

Comments
 (0)