#[non_exhaustive]pub enum BinstallError {
Show 31 variants
TaskJoinError(JoinError),
UserAbort,
InvalidSignature {
crate_name: CompactString,
package_name: CompactString,
},
MissingSignature(CompactString),
UrlParse(ParseError),
TemplateParseError(ParseError),
FetchError(Box<FetchError>),
Download(DownloadError),
SubProcess {
command: Box<str>,
status: ExitStatus,
},
Io(Error),
UnknownRegistryName(CompactString),
RegistryError(Box<RegistryError>),
CargoManifestPath,
CargoManifest(Box<Error>),
RegistryParseError(Box<InvalidRegistryError>),
VersionParse(Box<VersionParseError>),
SuperfluousVersionOption,
UnspecifiedBinaries,
NoViableTargets,
BinFile(Error),
CargoTomlMissingPackage(CompactString),
DuplicateSourceFilePath {
path: PathBuf,
},
NoFallbackToCargoInstall,
InvalidPkgFmt(Box<InvalidPkgFmtError>),
GhApiErr(Box<GhApiError>),
TargetTripleParseError(Box<TargetTripleParseError>),
GitError(GitError),
LoadManifestFromWSError(Box<Error>),
CargoInstallDoesNotSupportInstallPath,
CrateContext(Box<CrateContextError>),
Errors(CrateErrors),
}Expand description
Error kinds emitted by cargo-binstall.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
TaskJoinError(JoinError)
Internal: a task could not be joined.
- Code:
binstall::internal::task_join - Exit: 17
UserAbort
The installation was cancelled by a user at a confirmation prompt,
or user send a ctrl_c on all platforms or
SIGINT, SIGHUP, SIGTERM or SIGQUIT on unix to the program.
- Code:
binstall::user_abort - Exit: 32
InvalidSignature
Package is not signed and policy requires it.
- Code:
binstall::signature::invalid - Exit: 40
MissingSignature(CompactString)
Package is not signed and policy requires it.
- Code:
binstall::signature::missing - Exit: 41
UrlParse(ParseError)
A URL is invalid.
This may be the result of a template in a Cargo manifest.
- Code:
binstall::url_parse - Exit: 65
TemplateParseError(ParseError)
Failed to parse template.
- Code:
binstall::template - Exit: 67
FetchError(Box<FetchError>)
Failed to fetch pre-built binaries.
- Code:
binstall::fetch - Exit: 68
Download(DownloadError)
Failed to download or failed to decode the body.
- Code:
binstall::download - Exit: 68
SubProcess
A subprocess failed.
This is often about cargo-install calls.
- Code:
binstall::subprocess - Exit: 70
Io(Error)
A generic I/O error.
- Code:
binstall::io - Exit: 74
UnknownRegistryName(CompactString)
Unknown registry name
- Code:
binstall::cargo_registry - Exit: 75
RegistryError(Box<RegistryError>)
An error interacting with the crates.io API.
This could either be a “not found” or a server/transport error.
- Code:
binstall::cargo_registry - Exit: 76
CargoManifestPath
The override path to the cargo manifest is invalid or cannot be resolved.
- Code:
binstall::cargo_manifest_path - Exit: 77
CargoManifest(Box<Error>)
A parsing or validation error in a cargo manifest.
This should be rare, as manifests are generally fetched from crates.io, which does its own
validation upstream. The most common failure will therefore be for direct repository access
and with the --manifest-path option.
- Code:
binstall::cargo_manifest - Exit: 78
RegistryParseError(Box<InvalidRegistryError>)
Failure to parse registry index url
- Code:
binstall::cargo_registry - Exit: 79
VersionParse(Box<VersionParseError>)
A version is not valid semver.
Note that we use the semver crate, which parses Cargo version syntax; this may be
somewhat stricter or very slightly different from other semver implementations.
- Code:
binstall::version::parse - Exit: 80
SuperfluousVersionOption
The crate@version syntax was used at the same time as the –version option.
You can’t do that as it’s ambiguous which should apply.
- Code:
binstall::conflict::version - Exit: 84
UnspecifiedBinaries
No binaries were found for the crate.
When installing, either the binaries are specified in the crate’s Cargo.toml, or they’re inferred from the crate layout (e.g. src/main.rs or src/bins/name.rs). If no binaries are found through these methods, we can’t know what to install!
- Code:
binstall::resolve::binaries - Exit: 86
NoViableTargets
No viable targets were found.
When installing, we attempt to find which targets the host (your computer) supports, and discover builds for these targets from the remote binary source. This error occurs when we fail to discover the host’s target.
You should in this case specify –target manually.
- Code:
binstall::targets::none_host - Exit: 87
BinFile(Error)
Failed to find or install binaries.
- Code:
binstall::bins - Exit: 88
CargoTomlMissingPackage(CompactString)
Cargo.toml of the crate does not have section “Package”.
- Code:
binstall::cargo_manifest - Exit: 89
DuplicateSourceFilePath
bin-dir configuration provided generates duplicate source path.
- Code:
binstall::cargo_manifest - Exit: 90
NoFallbackToCargoInstall
Fallback to cargo-install is disabled.
- Code:
binstall::no_fallback_to_cargo_install - Exit: 94
InvalidPkgFmt(Box<InvalidPkgFmtError>)
Fallback to cargo-install is disabled.
- Code:
binstall::invalid_pkg_fmt - Exit: 95
GhApiErr(Box<GhApiError>)
Request to GitHub API failed
- Code:
binstall::gh_api_failure - Exit: 96
TargetTripleParseError(Box<TargetTripleParseError>)
Failed to parse target triple
- Code:
binstall::target_triple_parse_error - Exit: 97
GitError(GitError)
git only.Failed to shallow clone git repository
- Code:
binstall::git - Exit: 98
LoadManifestFromWSError(Box<Error>)
Failed to load manifest from workspace
- Code:
binstall::load_manifest_from_workspace - Exit: 99
CargoInstallDoesNotSupportInstallPath
cargo-install does not support --install-path
- Code:
binstall::cargo_install_does_not_support_install_path - Exit: 100
CrateContext(Box<CrateContextError>)
A wrapped error providing the context of which crate the error is about.
Errors(CrateErrors)
A wrapped error for failures of multiple crates when --continue-on-failure is specified.
Implementations§
Source§impl BinstallError
impl BinstallError
Sourcepub fn exit_code(&self) -> ExitCode
pub fn exit_code(&self) -> ExitCode
The recommended exit code for this error.
This will never output:
- 0 (success)
- 1 and 2 (catchall and shell)
- 16 (binstall errors not handled here)
- 64 (generic error)
Sourcepub fn crate_context(self, crate_name: impl Into<CompactString>) -> Self
pub fn crate_context(self, crate_name: impl Into<CompactString>) -> Self
Add crate context to the error
pub fn crate_errors(errors: Vec<Box<CrateContextError>>) -> Option<Self>
pub fn get_report(self) -> Option<Report>
Trait Implementations§
Source§impl Debug for BinstallError
impl Debug for BinstallError
Source§impl Diagnostic for BinstallError
impl Diagnostic for BinstallError
Source§fn code(&self) -> Option<Box<dyn Display + '_>>
fn code(&self) -> Option<Box<dyn Display + '_>>
Diagnostic. Ideally also globally unique, and documented
in the toplevel crate’s documentation for easy searching. Rust path
format (foo::bar::baz) is recommended, but more classic codes like
E0123 or enums will work just fine.Source§fn help(&self) -> Option<Box<dyn Display + '_>>
fn help(&self) -> Option<Box<dyn Display + '_>>
Diagnostic. Do you have any
advice for the poor soul who’s just run into this issue?Source§fn severity(&self) -> Option<Severity>
fn severity(&self) -> Option<Severity>
ReportHandlers to change the display format
of this diagnostic. Read moreSource§fn labels(&self) -> Option<Box<dyn Iterator<Item = LabeledSpan> + '_>>
fn labels(&self) -> Option<Box<dyn Iterator<Item = LabeledSpan> + '_>>
Diagnostic’s Diagnostic::source_codeSource§fn source_code(&self) -> Option<&dyn SourceCode>
fn source_code(&self) -> Option<&dyn SourceCode>
Diagnostic’s Diagnostic::labels to.Diagnostics.Source§fn url(&self) -> Option<Box<dyn Display + '_>>
fn url(&self) -> Option<Box<dyn Display + '_>>
Diagnostic.Source§fn diagnostic_source(&self) -> Option<&dyn Diagnostic>
fn diagnostic_source(&self) -> Option<&dyn Diagnostic>
Source§impl Display for BinstallError
impl Display for BinstallError
Source§impl Error for BinstallError
impl Error for BinstallError
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Source§impl From<BinstallError> for Error
impl From<BinstallError> for Error
Source§fn from(e: BinstallError) -> Error
fn from(e: BinstallError) -> Error
Source§impl From<Box<Error>> for BinstallError
impl From<Box<Error>> for BinstallError
Source§fn from(source: Box<LoadManifestFromWSError>) -> Self
fn from(source: Box<LoadManifestFromWSError>) -> Self
Source§impl From<Box<InvalidRegistryError>> for BinstallError
impl From<Box<InvalidRegistryError>> for BinstallError
Source§fn from(source: Box<InvalidRegistryError>) -> Self
fn from(source: Box<InvalidRegistryError>) -> Self
Source§impl From<Box<RegistryError>> for BinstallError
impl From<Box<RegistryError>> for BinstallError
Source§fn from(source: Box<RegistryError>) -> Self
fn from(source: Box<RegistryError>) -> Self
Source§impl From<Box<VersionParseError>> for BinstallError
impl From<Box<VersionParseError>> for BinstallError
Source§fn from(source: Box<VersionParseError>) -> Self
fn from(source: Box<VersionParseError>) -> Self
Source§impl From<DownloadError> for BinstallError
impl From<DownloadError> for BinstallError
Source§fn from(source: DownloadError) -> Self
fn from(source: DownloadError) -> Self
Source§impl From<Error> for BinstallError
impl From<Error> for BinstallError
Source§impl From<Error> for BinstallError
impl From<Error> for BinstallError
Source§impl From<Error> for BinstallError
impl From<Error> for BinstallError
Source§fn from(e: RemoteError) -> Self
fn from(e: RemoteError) -> Self
Source§impl From<Error> for BinstallError
impl From<Error> for BinstallError
Source§fn from(e: CargoTomlError) -> Self
fn from(e: CargoTomlError) -> Self
Source§impl From<Error> for BinstallError
impl From<Error> for BinstallError
Source§fn from(e: LoadManifestFromWSError) -> Self
fn from(e: LoadManifestFromWSError) -> Self
Source§impl From<FetchError> for BinstallError
impl From<FetchError> for BinstallError
Source§fn from(e: FetchError) -> Self
fn from(e: FetchError) -> Self
Source§impl From<GhApiError> for BinstallError
impl From<GhApiError> for BinstallError
Source§fn from(e: GhApiError) -> Self
fn from(e: GhApiError) -> Self
Source§impl From<GitError> for BinstallError
impl From<GitError> for BinstallError
Source§impl From<InvalidPkgFmtError> for BinstallError
impl From<InvalidPkgFmtError> for BinstallError
Source§fn from(e: InvalidPkgFmtError) -> Self
fn from(e: InvalidPkgFmtError) -> Self
Source§impl From<InvalidRegistryError> for BinstallError
impl From<InvalidRegistryError> for BinstallError
Source§fn from(e: InvalidRegistryError) -> Self
fn from(e: InvalidRegistryError) -> Self
Source§impl From<JoinError> for BinstallError
impl From<JoinError> for BinstallError
Source§impl From<ParseError> for BinstallError
impl From<ParseError> for BinstallError
Source§fn from(source: ParseError) -> Self
fn from(source: ParseError) -> Self
Source§impl From<ParseError> for BinstallError
impl From<ParseError> for BinstallError
Source§fn from(source: ParseError) -> Self
fn from(source: ParseError) -> Self
Source§impl From<RegistryError> for BinstallError
impl From<RegistryError> for BinstallError
Source§fn from(e: RegistryError) -> Self
fn from(e: RegistryError) -> Self
Source§impl From<ParseError> for BinstallError
impl From<ParseError> for BinstallError
Source§fn from(e: TargetTripleParseError) -> Self
fn from(e: TargetTripleParseError) -> Self
Source§impl Termination for BinstallError
impl Termination for BinstallError
Auto Trait Implementations§
impl Freeze for BinstallError
impl !RefUnwindSafe for BinstallError
impl Send for BinstallError
impl Sync for BinstallError
impl Unpin for BinstallError
impl UnsafeUnpin for BinstallError
impl !UnwindSafe for BinstallError
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> ErrorExt for T
impl<T> ErrorExt for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> ToCompactString for Twhere
T: Display,
impl<T> ToCompactString for Twhere
T: Display,
Source§fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
ToCompactString::to_compact_string() Read moreSource§fn to_compact_string(&self) -> CompactString
fn to_compact_string(&self) -> CompactString
CompactString. Read moreSource§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
Source§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.