diff --git a/src/binstall/resolve.rs b/src/binstall/resolve.rs index a207192e..3279bf14 100644 --- a/src/binstall/resolve.rs +++ b/src/binstall/resolve.rs @@ -4,6 +4,7 @@ use std::{ }; use cargo_toml::{Package, Product}; +use compact_str::CompactString; use log::{debug, error, info, warn}; use miette::{miette, Result}; use reqwest::Client; @@ -19,7 +20,7 @@ pub enum Resolution { Fetch { fetcher: Arc, package: Package, - name: String, + name: CompactString, version: String, bin_path: PathBuf, bin_files: Vec, diff --git a/src/helpers/crate_name.rs b/src/helpers/crate_name.rs index 7c38e8f5..0f9ec2f4 100644 --- a/src/helpers/crate_name.rs +++ b/src/helpers/crate_name.rs @@ -1,11 +1,12 @@ use std::{convert::Infallible, fmt, str::FromStr}; +use compact_str::CompactString; use itertools::Itertools; #[derive(Debug, Clone, Eq, PartialEq)] pub struct CrateName { - pub name: String, - pub version: Option, + pub name: CompactString, + pub version: Option, } impl fmt::Display for CrateName { @@ -26,12 +27,12 @@ impl FromStr for CrateName { fn from_str(s: &str) -> Result { Ok(if let Some((name, version)) = s.split_once('@') { CrateName { - name: name.to_string(), - version: Some(version.to_string()), + name: name.into(), + version: Some(version.into()), } } else { CrateName { - name: s.to_string(), + name: s.into(), version: None, } })