mirror of
https://github.com/cargo-bins/cargo-binstall.git
synced 2025-04-24 14:28:42 +00:00
Optimize resolve_inner
: Avoid VersionReq::clone
(#656)
* Add new dep maybe-owned v0.3.4 to binstalk * Optimize `resolve_inner`: Avoid `VersionReq::clone` Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
This commit is contained in:
parent
7656b887d9
commit
7b34178bcc
3 changed files with 10 additions and 7 deletions
|
@ -23,6 +23,7 @@ futures-util = { version = "0.3.25", default-features = false, features = ["std"
|
|||
home = "0.5.4"
|
||||
itertools = "0.10.5"
|
||||
jobslot = { version = "0.2.8", features = ["tokio"] }
|
||||
maybe-owned = "0.3.4"
|
||||
miette = "5.5.0"
|
||||
normalize-path = { version = "0.2.0", path = "../normalize-path" }
|
||||
once_cell = "1.17.0"
|
||||
|
|
|
@ -10,6 +10,7 @@ use cargo_toml::Manifest;
|
|||
use compact_str::{CompactString, ToCompactString};
|
||||
use crates_io_api::AsyncClient as CratesIoApiClient;
|
||||
use itertools::Itertools;
|
||||
use maybe_owned::MaybeOwned;
|
||||
use semver::{Version, VersionReq};
|
||||
use tokio::task::block_in_place;
|
||||
use tracing::{debug, info, instrument, warn};
|
||||
|
@ -57,11 +58,11 @@ async fn resolve_inner(
|
|||
) -> Result<Resolution, BinstallError> {
|
||||
info!("Resolving package: '{}'", crate_name);
|
||||
|
||||
let version_req: VersionReq = match (crate_name.version_req, &opts.version_req) {
|
||||
(Some(version), None) => version,
|
||||
(None, Some(version)) => version.clone(),
|
||||
let version_req = match (&crate_name.version_req, &opts.version_req) {
|
||||
(Some(version), None) => MaybeOwned::Borrowed(version),
|
||||
(None, Some(version)) => MaybeOwned::Borrowed(version),
|
||||
(Some(_), Some(_)) => Err(BinstallError::SuperfluousVersionOption)?,
|
||||
(None, None) => VersionReq::STAR,
|
||||
(None, None) => MaybeOwned::Owned(VersionReq::STAR),
|
||||
};
|
||||
|
||||
let version_req_str = version_req.to_compact_string();
|
||||
|
@ -69,7 +70,7 @@ async fn resolve_inner(
|
|||
let Some(package_info) = PackageInfo::resolve(&opts,
|
||||
crate_name.name,
|
||||
curr_version,
|
||||
version_req,
|
||||
&version_req,
|
||||
opts.client.clone(),
|
||||
&opts.crates_io_api_client).await?
|
||||
else {
|
||||
|
@ -337,7 +338,7 @@ impl PackageInfo {
|
|||
opts: &Options,
|
||||
name: CompactString,
|
||||
curr_version: Option<Version>,
|
||||
version_req: VersionReq,
|
||||
version_req: &VersionReq,
|
||||
client: Client,
|
||||
crates_io_api_client: &CratesIoApiClient,
|
||||
) -> Result<Option<Self>, BinstallError> {
|
||||
|
@ -349,7 +350,7 @@ impl PackageInfo {
|
|||
client,
|
||||
crates_io_api_client,
|
||||
&name,
|
||||
&version_req,
|
||||
version_req,
|
||||
))
|
||||
.await?
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue