Use a boxed slice for extras and groups (#12391)

## Summary

A very common struct, and these are immutable. Easy to optimize.
This commit is contained in:
Charlie Marsh
2025-03-22 08:53:36 -07:00
committed by GitHub
parent 4215d0e16b
commit 149102a4e7
18 changed files with 72 additions and 75 deletions
+4 -14
View File
@@ -58,14 +58,9 @@ impl PubGrubDependency {
} else {
Either::Right(iter::empty())
};
let extras = requirement.extras.to_vec();
Either::Left(Either::Left(
base.chain(
requirement
.extras
.clone()
.into_iter()
.map(|extra| (Some(extra), None)),
),
base.chain(extras.into_iter().map(|extra| (Some(extra), None))),
))
} else if !requirement.groups.is_empty() {
let base = if requirement
@@ -77,14 +72,9 @@ impl PubGrubDependency {
} else {
Either::Right(iter::empty())
};
let groups = requirement.groups.to_vec();
Either::Left(Either::Right(
base.chain(
requirement
.groups
.clone()
.into_iter()
.map(|group| (None, Some(group))),
),
base.chain(groups.into_iter().map(|group| (None, Some(group)))),
))
} else {
Either::Right(iter::once((None, None)))
+2 -2
View File
@@ -1672,7 +1672,7 @@ impl<InstalledPackages: InstalledPackagesProvider> ResolverState<InstalledPackag
);
requirements
.flat_map(|requirement| {
.flat_map(move |requirement| {
PubGrubDependency::from_requirement(
&self.conflicts,
requirement,
@@ -1952,7 +1952,7 @@ impl<InstalledPackages: InstalledPackagesProvider> ResolverState<InstalledPackag
if name == Some(&req.name) && !req.source.is_empty() {
self_constraints.push(Requirement {
name: req.name.clone(),
extras: vec![],
extras: Box::new([]),
groups: req.groups.clone(),
source: req.source.clone(),
origin: req.origin.clone(),