Skip to main content

DynoxideError

Enum DynoxideError 

Source
#[non_exhaustive]
pub enum DynoxideError {
Show 16 variants ResourceNotFoundException(String), ResourceInUseException(String), ValidationException(String), KeyEmptyValueValidation(String), ConditionalCheckFailedException(String, Option<HashMap<String, AttributeValue>>), TransactionCanceledException(String, Vec<CancellationReason>), ItemCollectionSizeLimitExceededException(String), DuplicateItemException(String), ProvisionedThroughputExceededException(String), SerializationException(String), LimitExceededException(String), AccessDeniedException(String), IdempotentParameterMismatchException(String), InternalServerError(String), ConversionError(ConversionError), SqliteError(Error),
}
Expand description

DynamoDB error types.

Each variant corresponds to a DynamoDB API error, carrying a human-readable message that matches DynamoDB’s actual error messages.

Marked #[non_exhaustive] as of 0.10.0 (itself a breaking release), so later variant additions stay non-breaking. Downstream match arms over this enum must include a wildcard.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

ResourceNotFoundException(String)

Table or resource not found.

§

ResourceInUseException(String)

Table or resource already exists / is in use.

§

ValidationException(String)

Input validation failed.

§

KeyEmptyValueValidation(String)

An empty-string or empty-binary key value on a write. Serialises identically to ValidationException, but is a distinct variant so the transaction loops can surface it as a top-level error instead of a ValidationError cancellation reason (#95).

§

ConditionalCheckFailedException(String, Option<HashMap<String, AttributeValue>>)

Conditional check (ConditionExpression) failed on write. Optionally carries the existing item when ReturnValuesOnConditionCheckFailure is ALL_OLD.

§

TransactionCanceledException(String, Vec<CancellationReason>)

One or more transaction conditions failed. Carries the message and per-item cancellation reasons.

§

ItemCollectionSizeLimitExceededException(String)

Item collection exceeded size limit (10 GB per partition key value).

§

DuplicateItemException(String)

Duplicate primary key on PartiQL INSERT (distinct from ConditionalCheckFailedException).

§

ProvisionedThroughputExceededException(String)

Throughput exceeded (stored but not enforced — included for API fidelity).

§

SerializationException(String)

Request body deserialisation failed (malformed JSON, wrong types).

§

LimitExceededException(String)

Too many concurrent operations or index updates.

§

AccessDeniedException(String)

Access denied (e.g. non-existent resource ARN in tag operations).

§

IdempotentParameterMismatchException(String)

Idempotent request token reused with different request content.

§

InternalServerError(String)

Catch-all for internal / unexpected errors (SQLite failures, etc.).

§

ConversionError(ConversionError)

Type conversion error (e.g. wrong AttributeValue variant).

§

SqliteError(Error)

SQLite error (converted from rusqlite).

Implementations§

Source§

impl DynoxideError

Source

pub fn error_type(&self) -> &'static str

Returns the DynamoDB __type string for this error.

Source

pub fn short_error_code(&self) -> &'static str

Returns the short error code used in BatchExecuteStatement per-statement errors.

These are the short-form codes that DynamoDB uses in BatchStatementError.Code, as opposed to the fully qualified __type strings from error_type().

Source

pub fn status_code(&self) -> u16

Returns the HTTP status code for this error.

Source

pub fn to_response(&self) -> ErrorResponse

Convert to a DynamoDB-compatible JSON error response body.

Source

pub fn to_json(&self) -> String

Serialise to DynamoDB-compatible JSON string.

SerializationException and TransactionCanceledException use Message (capital M) while all other errors use message (lowercase), matching real DynamoDB behaviour.

Trait Implementations§

Source§

impl Debug for DynoxideError

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for DynoxideError

Source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Error for DynoxideError

Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0:

use the Display impl or to_string()

1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl From<BackendError> for DynoxideError

Most backend failures (BackendError) are storage-level faults: a locked database, an I/O error, a constraint the application layer did not anticipate. None of those is part of DynamoDB’s client-facing error contract, so they surface as InternalServerError (HTTP 500), matching how a raw rusqlite::Error surfaces via SqliteError.

The one exception is BackendError::Validation: a backend method such as set_tags enforces a client-facing limit (the 50-tag cap) and raises a ValidationException. That crosses the trait boundary as BackendError::Validation and is restored here to its ValidationException (HTTP 400) so the envelope is unchanged from calling Storage directly.

A one-way From is deliberate rather than merging the two types: BackendError is the narrow storage vocabulary, DynoxideError the wider API vocabulary. A merge is deferred.

Source§

fn from(err: BackendError) -> Self

Converts to this type from the input type.
Source§

impl From<ConversionError> for DynoxideError

Source§

fn from(source: ConversionError) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for DynoxideError

Source§

fn from(source: Error) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Fake for T

Source§

fn fake<U>(&self) -> U
where Self: FakeBase<U>,

Source§

fn fake_with_rng<U, R>(&self, rng: &mut R) -> U
where R: Rng + ?Sized, Self: FakeBase<U>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more