Skip to content

Commit

Permalink
Move large struct DetailedTomlDependency into a Box and use Cow
Browse files Browse the repository at this point in the history
… to avoid cloning it

commit-id:42d7d77a
  • Loading branch information
mkaput committed Oct 6, 2023
1 parent 214e5b1 commit 0088929
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 7 deletions.
11 changes: 6 additions & 5 deletions scarb/src/core/manifest/toml_manifest.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
use std::borrow::Cow;
use std::collections::BTreeMap;
use std::default::Default;
use std::fs;
Expand Down Expand Up @@ -245,7 +246,7 @@ pub enum TomlDependency {
/// [`VersionReq`] specified as a string, e.g. `package = "<version>"`.
Simple(VersionReq),
/// Detailed specification as a table, e.g. `package = { version = "<version>" }`.
Detailed(DetailedTomlDependency),
Detailed(Box<DetailedTomlDependency>),
}

#[derive(Clone, Debug, Default, Deserialize, Serialize)]
Expand Down Expand Up @@ -331,13 +332,13 @@ impl TomlManifest {
}

impl TomlDependency {
fn resolve(&self) -> DetailedTomlDependency {
fn resolve(&self) -> Cow<'_, DetailedTomlDependency> {
match self {
TomlDependency::Simple(version) => DetailedTomlDependency {
TomlDependency::Simple(version) => Cow::Owned(DetailedTomlDependency {
version: Some(version.clone()),
..Default::default()
},
TomlDependency::Detailed(detailed) => detailed.clone(),
}),
TomlDependency::Detailed(detailed) => Cow::Borrowed(detailed),
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions scarb/src/core/publishing/manifest_normalization.rs
Original file line number Diff line number Diff line change
Expand Up @@ -110,14 +110,14 @@ fn generate_dependency(dep: &ManifestDependency) -> Result<TomlDependency> {
}
});

Ok(TomlDependency::Detailed(DetailedTomlDependency {
Ok(TomlDependency::Detailed(Box::new(DetailedTomlDependency {
version,
path: None,
git: None,
branch: None,
tag: None,
rev: None,
}))
})))
}

fn map_metadata_file_path<T>(
Expand Down

0 comments on commit 0088929

Please sign in to comment.