Skip to content

Commit d99fed2

Browse files
committed
refactor(toml): remove unnecessary clone on inheritable fields
1 parent d6455a2 commit d99fed2

File tree

1 file changed

+26
-32
lines changed

1 file changed

+26
-32
lines changed

src/cargo/util/toml/mod.rs

Lines changed: 26 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1644,43 +1644,36 @@ impl InheritableFields {
16441644
self.ws_root = ws_root;
16451645
}
16461646

1647+
/// Gets a workspace dependency with the `name`.
16471648
pub fn get_dependency(&self, name: &str, package_root: &Path) -> CargoResult<TomlDependency> {
1648-
self.dependencies.clone().map_or(
1649-
Err(anyhow!("`workspace.dependencies` was not defined")),
1650-
|deps| {
1651-
deps.get(name).map_or(
1652-
Err(anyhow!(
1653-
"`dependency.{}` was not found in `workspace.dependencies`",
1654-
name
1655-
)),
1656-
|dep| {
1657-
let mut dep = dep.clone();
1658-
if let TomlDependency::Detailed(detailed) = &mut dep {
1659-
detailed.resolve_path(name, self.ws_root(), package_root)?
1660-
}
1661-
Ok(dep)
1662-
},
1663-
)
1664-
},
1665-
)
1649+
let Some(deps) = &self.dependencies else {
1650+
bail!("`workspace.dependencies` was not defined");
1651+
};
1652+
let Some(dep) = deps.get(name) else {
1653+
bail!("`dependency.{name}` was not found in `workspace.dependencies`");
1654+
};
1655+
let mut dep = dep.clone();
1656+
if let TomlDependency::Detailed(detailed) = &mut dep {
1657+
detailed.resolve_path(name, self.ws_root(), package_root)?;
1658+
}
1659+
Ok(dep)
16661660
}
16671661

1662+
/// Gets the field `workspace.package.readme`.
16681663
pub fn readme(&self, package_root: &Path) -> CargoResult<StringOrBool> {
1669-
readme_for_package(self.ws_root.as_path(), self.readme.clone()).map_or(
1670-
Err(anyhow!("`workspace.package.readme` was not defined")),
1671-
|readme| {
1672-
let rel_path =
1673-
resolve_relative_path("readme", &self.ws_root, package_root, &readme)?;
1674-
Ok(StringOrBool::String(rel_path))
1675-
},
1676-
)
1664+
let Some(readme) = readme_for_package(self.ws_root.as_path(), self.readme.as_ref()) else {
1665+
bail!("`workspace.package.readme` was not defined");
1666+
};
1667+
resolve_relative_path("readme", &self.ws_root, package_root, &readme)
1668+
.map(StringOrBool::String)
16771669
}
16781670

1671+
/// Gets the field `workspace.package.license-file`.
16791672
pub fn license_file(&self, package_root: &Path) -> CargoResult<String> {
1680-
self.license_file.clone().map_or(
1681-
Err(anyhow!("`workspace.package.license_file` was not defined")),
1682-
|d| resolve_relative_path("license-file", &self.ws_root, package_root, &d),
1683-
)
1673+
let Some(license_file) = &self.license_file else {
1674+
bail!("`workspace.package.license-file` was not defined");
1675+
};
1676+
resolve_relative_path("license-file", &self.ws_root, package_root, license_file)
16841677
}
16851678

16861679
pub fn ws_root(&self) -> &PathBuf {
@@ -2382,7 +2375,8 @@ impl TomlManifest {
23822375
.readme
23832376
.clone()
23842377
.map(|mw| mw.resolve("readme", || inherit()?.readme(package_root)))
2385-
.transpose()?,
2378+
.transpose()?
2379+
.as_ref(),
23862380
),
23872381
authors: package
23882382
.authors
@@ -2980,7 +2974,7 @@ fn inheritable_from_path(
29802974
}
29812975

29822976
/// Returns the name of the README file for a [`TomlPackage`].
2983-
pub fn readme_for_package(package_root: &Path, readme: Option<StringOrBool>) -> Option<String> {
2977+
pub fn readme_for_package(package_root: &Path, readme: Option<&StringOrBool>) -> Option<String> {
29842978
match &readme {
29852979
None => default_readme_from_package_root(package_root),
29862980
Some(value) => match value {

0 commit comments

Comments
 (0)