diff --git a/src/binstall/resolve.rs b/src/binstall/resolve.rs index 3279bf14..5593ba2c 100644 --- a/src/binstall/resolve.rs +++ b/src/binstall/resolve.rs @@ -4,7 +4,7 @@ use std::{ }; use cargo_toml::{Package, Product}; -use compact_str::CompactString; +use compact_str::{format_compact, CompactString}; use log::{debug, error, info, warn}; use miette::{miette, Result}; use reqwest::Client; @@ -21,7 +21,7 @@ pub enum Resolution { fetcher: Arc, package: Package, name: CompactString, - version: String, + version: CompactString, bin_path: PathBuf, bin_files: Vec, }, @@ -83,11 +83,11 @@ pub async fn resolve( ) -> Result { info!("Installing package: '{}'", crate_name); - let mut version = match (&crate_name.version, &opts.version) { - (Some(version), None) => version.to_string(), - (None, Some(version)) => version.to_string(), + let mut version: CompactString = match (&crate_name.version, &opts.version) { + (Some(version), None) => version.clone(), + (None, Some(version)) => version.into(), (Some(_), Some(_)) => Err(BinstallError::SuperfluousVersionOption)?, - (None, None) => "*".to_string(), + (None, None) => "*".into(), }; // Treat 0.1.2 as =0.1.2 @@ -97,7 +97,7 @@ pub async fn resolve( .map(|ch| ch.is_ascii_digit()) .unwrap_or(false) { - version.insert(0, '='); + version = format_compact!("={version}"); } // Fetch crate via crates.io, git, or use a local manifest path