#[non_exhaustive]#[repr(i32)]pub enum ErrorCode {
Show 16 variants
Cancelled = 1,
Unknown = 2,
InvalidArgument = 3,
DeadlineExceeded = 4,
NotFound = 5,
AlreadyExists = 6,
PermissionDenied = 7,
ResourceExhausted = 8,
FailedPrecondition = 9,
Aborted = 10,
OutOfRange = 11,
Unimplemented = 12,
Internal = 13,
Unavailable = 14,
DataLoss = 15,
Unauthenticated = 16,
}Expand description
Derived from https://github.com/abseil/abseil-cpp/blob/master/absl/status/status.h. See the link for more information.
(Copyright 2019 The Abseil Authors.)
Unlike absl::StatusCode, this enum only allows representing non-OK values.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Cancelled = 1
Cancelled (gRPC code “CANCELLED”) indicates the operation was cancelled, typically by the
caller.
Unknown = 2
Unknown (gRPC code “UNKNOWN”) indicates an unknown error occurred. In general, more
specific errors should be raised, if possible. Errors raised by APIs that do not return
enough error information may be converted to this error.
InvalidArgument = 3
InvalidArgument (gRPC code “INVALID_ARGUMENT”) indicates the caller specified an invalid
argument, such as a malformed filename. Note that use of such errors should be narrowly
limited to indicate the invalid nature of the arguments themselves. Errors with validly
formed arguments that may cause errors with the state of the receiving system should be
denoted with FailedPrecondition instead.
DeadlineExceeded = 4
DeadlineExceeded (gRPC code “DEADLINE_EXCEEDED”) indicates a deadline expired before the
operation could complete. For operations that may change state within a system, this error
may be returned even if the operation has completed successfully. For example, a successful
response from a server could have been delayed long enough for the deadline to expire.
NotFound = 5
NotFound (gRPC code “NOT_FOUND”) indicates some requested entity (such as a file or
directory) was not found.
NotFound is useful if a request should be denied for an entire class of users, such as
during a gradual feature rollout or undocumented allow list. If a request should be denied
for specific sets of users, such as through user-based access control, use
PermissionDenied instead.
AlreadyExists = 6
AlreadyExists (gRPC code “ALREADY_EXISTS”) indicates that the entity a caller attempted to
create (such as a file or directory) is already present.
PermissionDenied = 7
PermissionDenied (gRPC code “PERMISSION_DENIED”) indicates that the caller does not have
permission to execute the specified operation. Note that this error is different than an
error due to an unauthenticated user. This error code does not imply the request is valid
or the requested entity exists or satisfies any other pre-conditions.
PermissionDenied must not be used for rejections caused by exhausting some resource.
Instead, use ResourceExhausted for those errors. PermissionDenied must not be used if
the caller cannot be identified. Instead, use Unauthenticated for those errors.
ResourceExhausted = 8
ResourceExhausted (gRPC code “RESOURCE_EXHAUSTED”) indicates some resource has been
exhausted, perhaps a per-user quota, or perhaps the entire file system is out of space.
FailedPrecondition = 9
FailedPrecondition (gRPC code “FAILED_PRECONDITION”) indicates that the operation was
rejected because the system is not in a state required for the operation’s execution. For
example, a directory to be deleted may be non-empty, an “rmdir” operation is applied to a
non-directory, etc.
Some guidelines that may help a service implementer in deciding between
FailedPrecondition, Aborted, and Unavailable:
- Use
Unavailableif the client can retry just the failing call. - Use
Abortedif the client should retry at a higher transaction level (such as when a client-specified test-and-set fails, indicating the client should restart a read-modify-write sequence). - Use
FailedPreconditionif the client should not retry until the system state has been explicitly fixed. For example, if a “rmdir” fails because the directory is non-empty,FailedPreconditionshould be returned since the client should not retry unless the files are deleted from the directory.
Aborted = 10
Aborted (gRPC code “ABORTED”) indicates the operation was aborted, typically due to a
concurrency issue such as a sequencer check failure or a failed transaction.
See the guidelines above for deciding between FailedPrecondition, Aborted, and
Unavailable.
OutOfRange = 11
OutOfRange (gRPC code “OUT_OF_RANGE”) indicates the operation was attempted past the valid
range, such as seeking or reading past an end-of-file.
Unlike InvalidArgument, this error indicates a problem that may be fixed if the system
state changes. For example, a 32-bit file system will generate InvalidArgument if asked
to read at an offset that is not in the range [0,2^32-1], but it will generate OutOfRange
if asked to read from an offset past the current file size.
There is a fair bit of overlap between FailedPrecondition and OutOfRange. We recommend
using OutOfRange (the more specific error) when it applies so that callers who are
iterating through a space can easily look for an OutOfRange error to detect when they are
done.
Unimplemented = 12
Unimplemented (gRPC code “UNIMPLEMENTED”) indicates the operation is not implemented or
supported in this service. In this case, the operation should not be re-attempted.
Internal = 13
Internal (gRPC code “INTERNAL”) indicates an internal error has occurred and some
invariants expected by the underlying system have not been satisfied. This error code is
reserved for serious errors.
Unavailable (gRPC code “UNAVAILABLE”) indicates the service is currently unavailable and
that this is most likely a transient condition. An error such as this can be corrected by
retrying with a backoff scheme. Note that it is not always safe to retry non-idempotent
operations.
See the guidelines above for deciding between FailedPrecondition, Aborted, and
Unavailable.
DataLoss = 15
DataLoss (gRPC code “DATA_LOSS”) indicates that unrecoverable data loss or corruption has
occurred. As this error is serious, proper alerting should be attached to errors such as
this.
Unauthenticated = 16
Unauthenticated (gRPC code “UNAUTHENTICATED”) indicates that the request does not have
valid authentication credentials for the operation. Correct the authentication and try
again.
Implementations§
Source§impl ErrorCode
impl ErrorCode
Sourcepub fn from_errno(errno: i32) -> Option<ErrorCode>
pub fn from_errno(errno: i32) -> Option<ErrorCode>
Adapted from ErrnoToStatusCode in
https://github.com/abseil/abseil-cpp/blob/master/absl/status/status.cc
pub fn from_error_kind(kind: ErrorKind) -> ErrorCode
Sourcepub fn from_raw_os_error(err: &Error) -> Option<ErrorCode>
pub fn from_raw_os_error(err: &Error) -> Option<ErrorCode>
If err contains a raw_os_error(), returns it converted into an ErrorCode.
Otherwise returns None.
Trait Implementations§
impl Copy for ErrorCode
Source§impl Display for ErrorCode
If the alternate flag is set, prints the error code as a number, otherwise as text.
impl Display for ErrorCode
If the alternate flag is set, prints the error code as a number, otherwise as text.