Optimize BinstallError: Reduce size from 40B to 32B (#581)

* Optimize `BinstallError::CratesIoApi`: Extract new type `errors::CratesIoApiError` and box it
   Also improve `<CratesIoApiError as Display>::fmt` impl.
* Optimize `BinstallError::SubProcess`: Use `Box<str>` instead of `String`
* Optimize `BinstallError::CargoManifest`: Box `CargoTomlError`
* Optimize `BinstallError::VersionParse`: Extract `VersionParseError` and box it
   Also improve `<VersionParseError as Display>::fmt` impl.
* Optimize `BinstallError::CrateContext`: Extract `CrateContextError` and box it in
* Optimize `install_from_source`: Only format `cmd` on err

Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
This commit is contained in:
Jiahao XU 2022-12-01 18:05:00 +11:00 committed by GitHub
parent ab3e47c42b
commit 8a5577297e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 58 additions and 40 deletions

View file

@ -18,7 +18,7 @@ use super::Options;
use crate::{
bins,
drivers::fetch_crate_cratesio,
errors::BinstallError,
errors::{BinstallError, VersionParseError},
fetchers::{Data, Fetcher, TargetData},
helpers::remote::Client,
manifests::cargo_toml_binstall::{Meta, PkgMeta, PkgOverride},
@ -409,10 +409,11 @@ impl PackageInfo {
let new_version = match Version::parse(&new_version_str) {
Ok(new_version) => new_version,
Err(err) => {
return Err(BinstallError::VersionParse {
return Err(Box::new(VersionParseError {
v: new_version_str,
err,
})
.into())
}
};