Refactor and Optimizations (#459)

* Refactor: Avoid parsing `package.version()` twice in `ops::resolve` and `ops::install`
* Optimize Resolution: Replace `Package<Meta>` with two `CompactStrings`: `name` and `version`
* Use `CompactString` for `BinstallError::CratesIoApi::crate_name`
* Use `CompactString` for `BinstallError::VersionParse::v`
* Use `CompactString` for `BinstallError::VersionReq::req`
* Use `CompactString` for `BinstallError::VersionUnavailable::crate_name`

Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
This commit is contained in:
Jiahao XU 2022-10-06 02:19:12 +11:00 committed by GitHub
parent 70b0f8ec97
commit 3421403e75
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 38 additions and 42 deletions

View file

@ -114,7 +114,7 @@ pub enum BinstallError {
help("Check that the crate name you provided is correct.\nYou can also search for a matching crate at: https://lib.rs/search?q={crate_name}")
)]
CratesIoApi {
crate_name: String,
crate_name: CompactString,
#[source]
err: crates_io_api::Error,
},
@ -153,7 +153,7 @@ pub enum BinstallError {
#[error("version string '{v}' is not semver")]
#[diagnostic(severity(error), code(binstall::version::parse))]
VersionParse {
v: String,
v: CompactString,
#[source]
err: semver::Error,
},
@ -170,7 +170,7 @@ pub enum BinstallError {
#[error("version requirement '{req}' is not semver")]
#[diagnostic(severity(error), code(binstall::version::requirement))]
VersionReq {
req: String,
req: CompactString,
#[source]
err: semver::Error,
},
@ -194,7 +194,7 @@ pub enum BinstallError {
#[error("no crate information available for '{crate_name}' version '{v}'")]
#[diagnostic(severity(error), code(binstall::version::unavailable))]
VersionUnavailable {
crate_name: String,
crate_name: CompactString,
v: semver::Version,
},