// Defines 17 standard error codes based on the error codes defined in the // gRPC spec. https://grpc.github.io/grpc/core/md_doc_statuscodes.html // Custom errors can use these codes in order to allow for generic handling use std::error::Error; pub(crate) enum ErrorCodes { // OK is returned on success, we use "Success" since Ok is a keyword in Rust. Success = 0, // CANCELLED indicates the operation was cancelled (typically by the caller). Cancelled = 1, // UNKNOWN indicates an unknown error. UNKNOWN = 2, // INVALID_ARGUMENT indicates client specified an invalid argument. InvalidArgument = 3, // DEADLINE_EXCEEDED means operation expired before completion. DeadlineExceeded = 4, // NOT_FOUND means some requested entity (e.g., file or directory) was not found. NotFound = 5, // ALREADY_EXISTS means an entity that we attempted to create (e.g., file or directory) already exists. AlreadyExists = 6, // PERMISSION_DENIED indicates the caller does not have permission to execute the specified operation. PermissionDenied = 7, // UNAUTHENTICATED indicates the request does not have valid authentication credentials for the operation. UNAUTHENTICATED = 16, // RESOURCE_EXHAUSTED indicates some resource has been exhausted, perhaps a per-user quota, or perhaps the entire file system is out of space. ResourceExhausted = 8, // FAILED_PRECONDITION indicates operation was rejected because the system is not in a state required for the operation's execution. FailedPrecondition = 9, // ABORTED indicates the operation was aborted. Aborted = 10, // OUT_OF_RANGE means operation was attempted past the valid range. OutOfRange = 11, // UNIMPLEMENTED indicates operation is not implemented or not supported/enabled. Unimplemented = 12, // INTERNAL errors are internal errors. Internal = 13, // UNAVAILABLE indicates service is currently unavailable. Unavailable = 14, // DATA_LOSS indicates unrecoverable data loss or corruption. DataLoss = 15, } pub(crate) trait ChromaError: Error { fn code(&self) -> ErrorCodes; }