Skip to main content

ParseError

Struct ParseError 

Source
pub struct ParseError {
    pub code: ErrorCode,
    pub message: String,
    pub origin: ErrorOrigin,
    pub info: ParseErrorInfo,
}
Expand description

A Parse error: a code plus a message, plus how much of it may be seen.

No source chaining and no automatic From conversions from I/O or driver errors. That is deliberate: mapping a storage failure onto a Parse code is a decision each adapter must make explicitly, because picking the wrong code is a wire-compatibility bug that no type system will catch.

Fields§

§code: ErrorCode§message: String§origin: ErrorOrigin

Which envelope this becomes. See ErrorOrigin.

§info: ParseErrorInfo

Data for the server, never for the client. See ParseErrorInfo.

Implementations§

Source§

impl ParseError

Source

pub fn new(code: ErrorCode, message: impl Into<String>) -> Self

Source

pub fn internal(detail: impl Into<String>) -> Self

A failure upstream throws as a bare Error, so its detail never reaches a client.

The client sees {"code":1,"message":"Internal server error."} whatever detail says (middlewares.js:636-644); detail is logged and is the only record of what happened. Write it for an operator reading a log, not for an SDK.

Use this wherever upstream throws a plain Error, and new(ErrorCode::InternalServerError, ..) where upstream throws a Parse.Error carrying that code. The two are different bodies.

Source

pub fn with_duplicated_field(self, field: impl Into<String>) -> Self

Record which field’s unique index collided, out of band.

Source

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

The field whose unique index collided, if the adapter could recover it.

Source§

impl ParseError

Denials whose detail is logged and, by default, withheld.

Source

pub fn sanitized( code: ErrorCode, detailed: impl Into<String>, generic: &str, detail: ErrorDetail, ) -> Self

createSanitizedError (Error.js:13-21): the single constructor for a denial whose detailed message upstream replaces with a generic one.

The set of call sites is contract in both directions. Upstream routes a specific list of errors through this function and leaves the rest alone, so an error parse-rust sanitizes that upstream does not is as much a wire divergence as one it fails to sanitize. Adding a call here means finding the matching createSanitizedError at the pin first.

generic is upstream’s sanitizedMessage parameter, which defaults to Permission denied and is overridden at exactly one call site (DatabaseController.js:1590-1595). It is required here rather than defaulted, because the two upstream spellings are different strings on the wire and picking the wrong one silently is the failure this argument exists to prevent.

Source

pub fn permission_denied( code: ErrorCode, detailed: impl Into<String>, detail: ErrorDetail, ) -> Self

The common case: upstream’s default sanitizedMessage.

Source§

impl ParseError

Convenience constructors for the codes used most often in the core.

Source

pub fn invalid_json(message: impl Into<String>) -> Self

Source

pub fn incorrect_type(message: impl Into<String>) -> Self

Source

pub fn invalid_key_name(message: impl Into<String>) -> Self

Source

pub fn invalid_acl(message: impl Into<String>) -> Self

Source

pub fn invalid_query(message: impl Into<String>) -> Self

Trait Implementations§

Source§

impl Clone for ParseError

Source§

fn clone(&self) -> ParseError

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for ParseError

Source§

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

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

impl Display for ParseError

Source§

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

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

impl Eq for ParseError

Source§

impl Error for ParseError

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 PartialEq for ParseError

Source§

fn eq(&self, other: &ParseError) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for ParseError

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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, 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