RainyError

Enum RainyError 

Source
pub enum RainyError {
    Authentication {
        code: String,
        message: String,
        retryable: bool,
    },
    InvalidRequest {
        code: String,
        message: String,
        details: Option<Value>,
    },
    Provider {
        code: String,
        message: String,
        provider: String,
        retryable: bool,
    },
    RateLimit {
        code: String,
        message: String,
        retry_after: Option<u64>,
        current_usage: Option<String>,
    },
    InsufficientCredits {
        code: String,
        message: String,
        current_credits: f64,
        estimated_cost: f64,
        reset_date: Option<String>,
    },
    Network {
        message: String,
        retryable: bool,
        source_error: Option<String>,
    },
    Api {
        code: String,
        message: String,
        status_code: u16,
        retryable: bool,
        request_id: Option<String>,
    },
    Timeout {
        message: String,
        duration_ms: u64,
    },
    Serialization {
        message: String,
        source_error: Option<String>,
    },
}
Expand description

The comprehensive error type for all operations within the Rainy SDK.

RainyError is an enumeration of all possible errors that can occur, providing detailed context for each error variant.

Variants§

§

Authentication

An error related to authentication, such as an invalid or expired API key.

Fields

§code: String

A machine-readable error code (e.g., INVALID_API_KEY).

§message: String

A human-readable error message.

§retryable: bool

Indicates whether the request can be retried.

§

InvalidRequest

An error due to an invalid request, such as a missing required field.

Fields

§code: String

A machine-readable error code (e.g., MISSING_REQUIRED_FIELD).

§message: String

A human-readable error message.

§details: Option<Value>

Additional details about the error, if available.

§

Provider

An error that originates from an underlying AI provider (e.g., OpenAI, Anthropic).

Fields

§code: String

The error code from the provider.

§message: String

The error message from the provider.

§provider: String

The name of the provider that returned the error.

§retryable: bool

Indicates whether the request can be retried.

§

RateLimit

An error indicating that the rate limit for the API has been exceeded.

Fields

§code: String

A machine-readable error code (e.g., RATE_LIMIT_EXCEEDED).

§message: String

A human-readable error message.

§retry_after: Option<u64>

The recommended time to wait before retrying, in seconds.

§current_usage: Option<String>

Information about the current usage, if available.

§

InsufficientCredits

An error indicating that the account has insufficient credits to perform the request.

Fields

§code: String

A machine-readable error code (e.g., INSUFFICIENT_CREDITS).

§message: String

A human-readable error message.

§current_credits: f64

The current credit balance of the account.

§estimated_cost: f64

The estimated cost of the request.

§reset_date: Option<String>

The date when the credits are scheduled to be reset or topped up.

§

Network

An error related to network connectivity or HTTP-level issues.

Fields

§message: String

A message describing the network error.

§retryable: bool

Indicates whether the request can be retried.

§source_error: Option<String>

The underlying error message, if available.

§

Api

A generic API error that doesn’t fit into the other categories.

Fields

§code: String

A machine-readable error code.

§message: String

A human-readable error message.

§status_code: u16

The HTTP status code of the response.

§retryable: bool

Indicates whether the request can be retried.

§request_id: Option<String>

The unique ID of the request, for debugging purposes.

§

Timeout

An error indicating that the request timed out.

Fields

§message: String

A message describing the timeout.

§duration_ms: u64

The timeout duration in milliseconds.

§

Serialization

An error that occurs during serialization or deserialization of data.

Fields

§message: String

A message describing the serialization error.

§source_error: Option<String>

The underlying error message, if available.

Implementations§

Source§

impl RainyError

Source

pub fn is_retryable(&self) -> bool

Checks if the error is considered retryable.

Some errors, like network issues or rate limiting, are transient and can be resolved by retrying the request.

§Returns

true if the error is retryable, false otherwise.

Source

pub fn retry_after(&self) -> Option<u64>

Returns the recommended delay in seconds before a retry, if applicable.

This is typically used with RateLimit errors.

§Returns

An Option<u64> containing the retry delay in seconds, or None if not applicable.

Source

pub fn code(&self) -> Option<&str>

Returns the machine-readable error code, if available.

Source

pub fn request_id(&self) -> Option<&str>

Returns the unique request ID associated with the error, if available.

This is useful for debugging and support requests.

Trait Implementations§

Source§

impl Clone for RainyError

Source§

fn clone(&self) -> RainyError

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for RainyError

Source§

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

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

impl Display for RainyError

Source§

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

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

impl Error for RainyError

1.30.0 · 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<Error> for RainyError

Converts a reqwest::Error into a RainyError.

This implementation categorizes reqwest errors into Timeout, Network, or other appropriate RainyError variants.

Source§

fn from(err: Error) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for RainyError

Converts a serde_json::Error into a RainyError.

This is used for errors that occur during the serialization or deserialization of JSON data.

Source§

fn from(err: Error) -> Self

Converts to this type from the input type.
Source§

impl From<InvalidHeaderValue> for RainyError

Converts a reqwest::header::InvalidHeaderValue into a RainyError.

This is used when an invalid value is provided for an HTTP header.

Source§

fn from(err: InvalidHeaderValue) -> 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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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> ToStringFallible for T
where T: Display,

Source§

fn try_to_string(&self) -> Result<String, TryReserveError>

ToString::to_string, but without panic on OOM.

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
Source§

impl<T> ErasedDestructor for T
where T: 'static,