Skip to content

Commit f5ec502

Browse files
chore: Use HashSet rather than Vec for contains check
1 parent 74e5740 commit f5ec502

1 file changed

Lines changed: 23 additions & 16 deletions

File tree

src/skeleton/version_masking.rs

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
use std::collections::HashSet;
2+
13
use super::ParsedManifest;
24

35
/// All local dependencies are emptied out when running `prepare`.
@@ -23,7 +25,7 @@ const CONST_VERSION: &str = "0.0.1";
2325

2426
fn mask_local_versions_in_lockfile(
2527
lock_file: &mut toml::Value,
26-
local_package_names: &[toml::Value],
28+
local_package_names: &HashSet<String>,
2729
) {
2830
if let Some(packages) = lock_file
2931
.get_mut("package")
@@ -35,6 +37,7 @@ fn mask_local_versions_in_lockfile(
3537
.filter(|package| {
3638
package
3739
.get("name")
40+
.and_then(|name| name.as_str())
3841
.map(|name| local_package_names.contains(name))
3942
.unwrap_or_default()
4043
&& package.get("source").is_none()
@@ -50,7 +53,7 @@ fn mask_local_versions_in_lockfile(
5053

5154
fn mask_local_versions_in_manifests(
5255
manifests: &mut [ParsedManifest],
53-
local_package_names: &[toml::Value],
56+
local_package_names: &HashSet<String>,
5457
) {
5558
for manifest in manifests.iter_mut() {
5659
if let Some(package) = manifest.contents.get_mut("package") {
@@ -65,10 +68,10 @@ fn mask_local_versions_in_manifests(
6568
}
6669

6770
fn mask_local_dependency_versions(
68-
local_package_names: &[toml::Value],
71+
local_package_names: &HashSet<String>,
6972
manifest: &mut ParsedManifest,
7073
) {
71-
fn _mask(local_package_names: &[toml::Value], toml_value: &mut toml::Value) {
74+
fn _mask(local_package_names: &HashSet<String>, toml_value: &mut toml::Value) {
7275
for dependency_key in ["dependencies", "dev-dependencies", "build-dependencies"] {
7376
if let Some(dependencies) = toml_value.get_mut(dependency_key) {
7477
if let Some(dependencies) = dependencies.as_table_mut() {
@@ -83,13 +86,16 @@ fn mask_local_dependency_versions(
8386
if let Some(package_name) = dependency.get("package") {
8487
// We are dealing with a renamed package, so we check the name of the
8588
// "source" package.
86-
if local_package_names.contains(package_name) {
89+
if package_name
90+
.as_str()
91+
.is_some_and(|n| local_package_names.contains(n))
92+
{
8793
must_mark_version = true;
8894
}
8995
} else {
9096
// The package has not been renamed, so we check the name of the
9197
// key in the dependencies table.
92-
if local_package_names.contains(&toml::Value::String(key.to_string())) {
98+
if local_package_names.contains(key.as_str()) {
9399
must_mark_version = true;
94100
}
95101
}
@@ -149,14 +155,15 @@ fn mask_local_dependency_versions(
149155
}
150156
}
151157

152-
fn parse_local_crate_names(manifests: &[ParsedManifest]) -> Vec<toml::Value> {
153-
let mut local_package_names = vec![];
154-
for manifest in manifests.iter() {
155-
if let Some(package) = manifest.contents.get("package") {
156-
if let Some(name) = package.get("name") {
157-
local_package_names.push(name.to_owned());
158-
}
159-
}
160-
}
161-
local_package_names
158+
fn parse_local_crate_names(manifests: &[ParsedManifest]) -> HashSet<String> {
159+
manifests
160+
.iter()
161+
.filter_map(|m| {
162+
m.contents
163+
.get("package")?
164+
.get("name")?
165+
.as_str()
166+
.map(String::from)
167+
})
168+
.collect()
162169
}

0 commit comments

Comments
 (0)