#[non_exhaustive]pub enum BinstallError {
Show 30 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<ParseError>),
GitError(GitError),
LoadManifestFromWSError(Box<Error>),
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<ParseError>)
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
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>
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>
ReportHandler
s 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_code
Source§fn source_code(&self) -> Option<&dyn SourceCode>
fn source_code(&self) -> Option<&dyn SourceCode>
Diagnostic
’s Diagnostic::labels
to.Diagnostic
s.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
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<ParseError> for BinstallError
impl From<ParseError> for BinstallError
Source§fn from(e: ParseError) -> Self
fn from(e: 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 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 !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> 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> 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.