Struct ApiError

Source
pub struct ApiError { /* private fields */ }
Expand description

An error that should be returned from an API handler of a web service.

This should be returned from a handler as an error instead of a response or HttpApiProblem. Allows for logging etc. right before a response is generated.

Advantage over using an HttpApiProblem directly are that the StatusCode is mandatory and that this struct can also capture a source error which the HttpApiProblem does not since no error chains should be transmitted to clients.

§Message on Display and converting to HttpApiProblem

When Display::fmt is invoked or when the details field of an HttpApiProblem is filled, the message field is used if present. If no message is set but there is a source error set, to_string() of the source will be used instead. Otherwise nothing will be displayed or set.

ApiError requires the feature api-error to be enabled.

Implementations§

Source§

impl ApiError

Source

pub fn builder<T: Into<StatusCode>>(status: T) -> ApiErrorBuilder

Get an ApiErrorBuilder with the given StatusCode preset.

Source

pub fn try_builder<S: TryInto<StatusCode>>( status: S, ) -> Result<ApiErrorBuilder, InvalidStatusCode>

Try to get an ApiErrorBuilder with the given StatusCode preset.

Fails if the status argument can not be converted to a StatusCode

Source

pub fn new<T: Into<StatusCode>>(status: T) -> Self

Create a new instance with the given StatusCode

Source

pub fn try_new<S: TryInto<StatusCode>>( status: S, ) -> Result<Self, InvalidStatusCode>

Try to create a new instance with the given StatusCode

Fails if the status argument can not be converted to a StatusCode

Source

pub fn set_status<T: Into<StatusCode>>(&mut self, status: T)

Set the StatusCode.

Source

pub fn status(&self) -> StatusCode

Get the StatusCode.

Source

pub fn set_title<T: Display>(&mut self, title: T)

This is an optional title which can be used to create a valuable output for consumers.

Source

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

This is an optional title which can be used to create a valuable output for consumers.

Source

pub fn set_message<T: Display>(&mut self, message: T)

Set a message that describes the error in a human readable form.

Source

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

A message that describes the error in a human readable form.

Source

pub fn set_type_url<T: Display>(&mut self, type_url: T)

Set a URL that points to a detailed description of the error.

If not set it will most probably become httpstatus.es.com/XXX when the problem response is generated.

Source

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

A URL that points to a detailed description of the error.

Source

pub fn set_instance<T: Display>(&mut self, instance: T)

Source

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

A URL that points to a detailed description of the error.

Source

pub fn set_source<E: Error + Send + Sync + 'static>(&mut self, source: E)

Source

pub fn set_source_in_a_box<E: Into<Box<dyn Error + Send + Sync + 'static>>>( &mut self, source: E, )

Source

pub fn add_field<T: Into<String>, V: Serialize>( &mut self, name: T, value: V, ) -> bool

Adds a serializable field. If the serialization fails nothing will be added. This method returns true if the field was added and false if the field could not be added.

An already present field with the same name will be replaced.

Source

pub fn try_add_field<T: Into<String>, V: Serialize>( &mut self, name: T, value: V, ) -> Result<(), Box<dyn Error + 'static>>

Adds a serializable field. If the serialization fails nothing will be added. This fails if a failure occurred while adding the field.

An already present field with the same name will be replaced.

Source

pub fn fields(&self) -> &HashMap<String, Value>

Returns a reference to the serialized fields

Source

pub fn fields_mut(&mut self) -> &mut HashMap<String, Value>

Returns a mutable reference to the serialized fields

Source

pub fn extensions(&self) -> &Extensions

Get a reference to the extensions

Extensions will not be part of an HttpApiProblem

Source

pub fn extensions_mut(&mut self) -> &mut Extensions

Get a mutable reference to the extensions

Extensions will not be part of an HttpApiProblem

Source

pub fn to_http_api_problem(&self) -> HttpApiProblem

Creates an HttpApiProblem from this.

Note: If the status is StatusCode::UNAUTHORIZED fields will not be put into the problem.

Source

pub fn into_http_api_problem(self) -> HttpApiProblem

Turns this into an HttpApiProblem.

Note: If the status is StatusCode::UNAUTHORIZED fields will not be put into the problem.

Source

pub fn detail_message(&self) -> Option<Cow<'_, str>>

If there is a message it will be the message otherwise the source error stringified

If none is present, None is returned

Source

pub fn into_hyper_response(self) -> Response<String>

Creates a hyper response containing a problem JSON.

Requires the hyper feature

Source

pub fn into_axum_response(self) -> Response

Creates an axum Response containing a problem JSON.

Requires the axum feature

Source

pub fn into_actix_web_response(self) -> HttpResponse

Creates a actix-web response containing a problem JSON.

Requires the actix.web feature

Source

pub fn into_salvo_response(self) -> Response

Creates a salvo response containing a problem JSON.

Requires the salvo feature

Source

pub fn into_tide_response(self) -> Response

Creates a tide response containing a problem JSON.

Requires the tide feature

Trait Implementations§

Source§

impl Debug for ApiError

Source§

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

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

impl Display for ApiError

Source§

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

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

impl Error for ApiError

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<ApiError> for HttpApiProblem

Source§

fn from(error: ApiError) -> Self

Converts to this type from the input type.
Source§

impl From<ApiError> for HttpResponse

Source§

fn from(error: ApiError) -> Self

Converts to this type from the input type.
Source§

impl From<ApiError> for Response

Source§

fn from(error: ApiError) -> Response

Converts to this type from the input type.
Source§

impl From<ApiError> for Response

Source§

fn from(error: ApiError) -> Response

Converts to this type from the input type.
Source§

impl From<ApiError> for Response<String>

Source§

fn from(error: ApiError) -> Response<String>

Converts to this type from the input type.
Source§

impl From<ApiError> for Response

Source§

fn from(error: ApiError) -> Response

Converts to this type from the input type.
Source§

impl From<ApiErrorBuilder> for ApiError

Source§

fn from(builder: ApiErrorBuilder) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for ApiError

Source§

fn from(error: Error) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for ApiError

Source§

fn from(error: Error) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for ApiError

Source§

fn from(error: Error) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for ApiError

Source§

fn from(error: Error) -> Self

Converts to this type from the input type.
Source§

impl From<Infallible> for ApiError

Source§

fn from(error: Infallible) -> Self

Converts to this type from the input type.
Source§

impl From<MailboxError> for ApiError

Source§

fn from(error: MailboxError) -> Self

Converts to this type from the input type.
Source§

impl From<StatusCode> for ApiError

Source§

fn from(s: StatusCode) -> Self

Converts to this type from the input type.
Source§

impl<T: IntoApiError> From<T> for ApiError

Source§

fn from(t: T) -> ApiError

Converts to this type from the input type.
Source§

impl IntoResponse for ApiError

Source§

fn into_response(self) -> Response

Create a response.
Source§

impl ResponseError for ApiError

Source§

fn error_response(&self) -> HttpResponse

Creates full response for error. Read more
Source§

fn status_code(&self) -> StatusCode

Returns appropriate status code for error. Read more
Source§

impl Reject for ApiError

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> 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> IntoCollection<T> for T

Source§

fn into_collection<A>(self) -> SmallVec<A>
where A: Array<Item = T>,

Converts self into a collection.
Source§

fn mapped<U, F, A>(self, f: F) -> SmallVec<A>
where F: FnMut(T) -> U, A: Array<Item = U>,

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

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

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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

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

Source§

fn fg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the foreground set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like red() and green(), which have the same functionality but are pithier.

§Example

Set foreground color to white using fg():

use yansi::{Paint, Color};

painted.fg(Color::White);

Set foreground color to white using white().

use yansi::Paint;

painted.white();
Source§

fn primary(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Primary].

§Example
println!("{}", value.primary());
Source§

fn fixed(&self, color: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Fixed].

§Example
println!("{}", value.fixed(color));
Source§

fn rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Rgb].

§Example
println!("{}", value.rgb(r, g, b));
Source§

fn black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Black].

§Example
println!("{}", value.black());
Source§

fn red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Red].

§Example
println!("{}", value.red());
Source§

fn green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Green].

§Example
println!("{}", value.green());
Source§

fn yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Yellow].

§Example
println!("{}", value.yellow());
Source§

fn blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Blue].

§Example
println!("{}", value.blue());
Source§

fn magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Magenta].

§Example
println!("{}", value.magenta());
Source§

fn cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Cyan].

§Example
println!("{}", value.cyan());
Source§

fn white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: White].

§Example
println!("{}", value.white());
Source§

fn bright_black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlack].

§Example
println!("{}", value.bright_black());
Source§

fn bright_red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightRed].

§Example
println!("{}", value.bright_red());
Source§

fn bright_green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightGreen].

§Example
println!("{}", value.bright_green());
Source§

fn bright_yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightYellow].

§Example
println!("{}", value.bright_yellow());
Source§

fn bright_blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlue].

§Example
println!("{}", value.bright_blue());
Source§

fn bright_magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.bright_magenta());
Source§

fn bright_cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightCyan].

§Example
println!("{}", value.bright_cyan());
Source§

fn bright_white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightWhite].

§Example
println!("{}", value.bright_white());
Source§

fn bg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the background set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like on_red() and on_green(), which have the same functionality but are pithier.

§Example

Set background color to red using fg():

use yansi::{Paint, Color};

painted.bg(Color::Red);

Set background color to red using on_red().

use yansi::Paint;

painted.on_red();
Source§

fn on_primary(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Primary].

§Example
println!("{}", value.on_primary());
Source§

fn on_fixed(&self, color: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Fixed].

§Example
println!("{}", value.on_fixed(color));
Source§

fn on_rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Rgb].

§Example
println!("{}", value.on_rgb(r, g, b));
Source§

fn on_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Black].

§Example
println!("{}", value.on_black());
Source§

fn on_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Red].

§Example
println!("{}", value.on_red());
Source§

fn on_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Green].

§Example
println!("{}", value.on_green());
Source§

fn on_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Yellow].

§Example
println!("{}", value.on_yellow());
Source§

fn on_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Blue].

§Example
println!("{}", value.on_blue());
Source§

fn on_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Magenta].

§Example
println!("{}", value.on_magenta());
Source§

fn on_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Cyan].

§Example
println!("{}", value.on_cyan());
Source§

fn on_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: White].

§Example
println!("{}", value.on_white());
Source§

fn on_bright_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlack].

§Example
println!("{}", value.on_bright_black());
Source§

fn on_bright_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightRed].

§Example
println!("{}", value.on_bright_red());
Source§

fn on_bright_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightGreen].

§Example
println!("{}", value.on_bright_green());
Source§

fn on_bright_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightYellow].

§Example
println!("{}", value.on_bright_yellow());
Source§

fn on_bright_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlue].

§Example
println!("{}", value.on_bright_blue());
Source§

fn on_bright_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.on_bright_magenta());
Source§

fn on_bright_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightCyan].

§Example
println!("{}", value.on_bright_cyan());
Source§

fn on_bright_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightWhite].

§Example
println!("{}", value.on_bright_white());
Source§

fn attr(&self, value: Attribute) -> Painted<&T>

Enables the styling Attribute value.

This method should be used rarely. Instead, prefer to use attribute-specific builder methods like bold() and underline(), which have the same functionality but are pithier.

§Example

Make text bold using attr():

use yansi::{Paint, Attribute};

painted.attr(Attribute::Bold);

Make text bold using using bold().

use yansi::Paint;

painted.bold();
Source§

fn bold(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Bold].

§Example
println!("{}", value.bold());
Source§

fn dim(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Dim].

§Example
println!("{}", value.dim());
Source§

fn italic(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Italic].

§Example
println!("{}", value.italic());
Source§

fn underline(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Underline].

§Example
println!("{}", value.underline());

Returns self with the attr() set to [Attribute :: Blink].

§Example
println!("{}", value.blink());

Returns self with the attr() set to [Attribute :: RapidBlink].

§Example
println!("{}", value.rapid_blink());
Source§

fn invert(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Invert].

§Example
println!("{}", value.invert());
Source§

fn conceal(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Conceal].

§Example
println!("{}", value.conceal());
Source§

fn strike(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Strike].

§Example
println!("{}", value.strike());
Source§

fn quirk(&self, value: Quirk) -> Painted<&T>

Enables the yansi Quirk value.

This method should be used rarely. Instead, prefer to use quirk-specific builder methods like mask() and wrap(), which have the same functionality but are pithier.

§Example

Enable wrapping using .quirk():

use yansi::{Paint, Quirk};

painted.quirk(Quirk::Wrap);

Enable wrapping using wrap().

use yansi::Paint;

painted.wrap();
Source§

fn mask(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Mask].

§Example
println!("{}", value.mask());
Source§

fn wrap(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Wrap].

§Example
println!("{}", value.wrap());
Source§

fn linger(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Linger].

§Example
println!("{}", value.linger());
Source§

fn clear(&self) -> Painted<&T>

👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear(). The clear() method will be removed in a future release.

Returns self with the quirk() set to [Quirk :: Clear].

§Example
println!("{}", value.clear());
Source§

fn resetting(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Resetting].

§Example
println!("{}", value.resetting());
Source§

fn bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Bright].

§Example
println!("{}", value.bright());
Source§

fn on_bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: OnBright].

§Example
println!("{}", value.on_bright());
Source§

fn whenever(&self, value: Condition) -> Painted<&T>

Conditionally enable styling based on whether the Condition value applies. Replaces any previous condition.

See the crate level docs for more details.

§Example

Enable styling painted only when both stdout and stderr are TTYs:

use yansi::{Paint, Condition};

painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);
Source§

fn new(self) -> Painted<Self>
where Self: Sized,

Create a new Painted with a default Style. Read more
Source§

fn paint<S>(&self, style: S) -> Painted<&Self>
where S: Into<Style>,

Apply a style wholesale to self. Any previous style is replaced. Read more
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
Source§

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