Skip to main content

Error

Enum Error 

Source
pub enum Error {
    Duplicate(ElemId),
    Conflict {
        outer: ElemId,
        inner: ElemId,
    },
    UnknownElement(ElemId),
    Removal(RemovalError),
    Internal(Error),
    OutputTooLarge,
    OverlappingSpans {
        first: Span,
        second: Span,
    },
}
Expand description

Why a set of Edits could not be applied.

Most of these say the edits asked for something contradictory, or named an element that is not there, and the caller can act on them. Error::Internal and Error::OverlappingSpans are different in kind: no set of edits can ask for either, so reaching one is a bug in this module rather than anything the caller did. They are returned rather than panicked on because the caller is about to write the result over someone’s tariff, and refusing to is better than crashing in their process or, worse, handing back JSON that has been corrupted.

Variants§

§

Duplicate(ElemId)

More than one replacement targets this element, and they disagree about the text.

§

Conflict

Applying outer would silently discard the edit to inner, which sits inside it.

Fields

§outer: ElemId

The replaced element.

§inner: ElemId

The element edited inside it.

§

UnknownElement(ElemId)

The document has no element with this id.

§

Removal(RemovalError)

The removals could not be resolved to spans.

§

Internal(Error)

Splicing produced source that is no longer valid JSON, which is a bug in this module.

A replacement carries a payload that is one JSON value by construction, and a value is legal wherever another value was, so no payload should cause this. What is left is the removal spans and the splice itself, so reaching this means one of those is wrong - or, in a release build, that a payload builder is, since its own assertion is compiled out.

§

OutputTooLarge

The spliced source exceeds the maximum size deemed reasonable.

A caller can reach this: replacements longer than what they stand in for can take a document that was within the limit past it. This is the only size bound in the module, and it is on the whole output, since a bound on one payload would not catch that.

§

OverlappingSpans

Two resolved spans overlap, so erasing both would corrupt the output. No set of edits should reach this; it means resolution itself is wrong.

Fields

§first: Span

The span that starts first.

§second: Span

The span that starts inside it.

Trait Implementations§

Source§

impl Debug for Error

Source§

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

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

impl Display for Error

Source§

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

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

impl Eq for Error

Source§

impl Error for Error

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 Error

Source§

fn eq(&self, other: &Error) -> 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 Error

Auto Trait Implementations§

§

impl Freeze for Error

§

impl RefUnwindSafe for Error

§

impl Send for Error

§

impl Sync for Error

§

impl Unpin for Error

§

impl UnsafeUnpin for Error

§

impl UnwindSafe for Error

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

Source§

fn into_caveat<W>(self, warnings: Set<W>) -> Caveat<T, W>
where W: Warning,

Any type can be converted to Caveat<T> by supplying a list of Warnings.
Source§

fn into_infallible_caveat(self) -> Caveat<Self, Infallible>

If a FromSchema is infallible a Caveat can be created using this method.
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<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