From 4ec96064b6e1cd8a2458fb9b4291a782cf98f270 Mon Sep 17 00:00:00 2001 From: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> Date: Fri, 6 Jun 2025 20:39:55 +1000 Subject: [PATCH] Optimize CratesToml (#2186) * Optimize CratesToml Use Box instead of String Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Fix CrateToml::add_crate optimize apoend_to_file, drop crate_names before reserving Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Cargo fmt cargo_crates_v1.rs Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> --------- Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> --- .../binstalk-manifests/src/cargo_crates_v1.rs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/crates/binstalk-manifests/src/cargo_crates_v1.rs b/crates/binstalk-manifests/src/cargo_crates_v1.rs index 85a072d8..fb254238 100644 --- a/crates/binstalk-manifests/src/cargo_crates_v1.rs +++ b/crates/binstalk-manifests/src/cargo_crates_v1.rs @@ -34,7 +34,7 @@ use crate_version_source::*; #[derive(Clone, Debug, Default, Deserialize, Serialize)] pub struct CratesToml<'a> { #[serde(with = "tuple_vec_map")] - v1: Vec<(String, Cow<'a, [CompactString]>)>, + v1: Vec<(Box, Cow<'a, [CompactString]>)>, } impl<'v1> CratesToml<'v1> { @@ -117,7 +117,7 @@ impl<'v1> CratesToml<'v1> { let source = Source::from(&metadata.source); self.v1.push(( - format!("{name} {version} ({source})"), + format!("{name} {version} ({source})").into(), Cow::borrowed(&metadata.bins), )); } @@ -128,12 +128,14 @@ impl<'v1> CratesToml<'v1> { ) -> Result<(), CratesTomlParseError> { let mut c1 = CratesToml::load_from_reader(&mut *file)?; - let mut crate_names: Vec<_> = crates - .iter() - .map(|metadata| metadata.name.as_str()) - .collect(); - crate_names.sort_unstable(); - c1.remove_all(&crate_names); + c1.remove_all(&{ + let mut crate_names: Vec<_> = crates + .iter() + .map(|metadata| metadata.name.as_str()) + .collect(); + crate_names.sort_unstable(); + crate_names + }); c1.v1.reserve_exact(crates.len());