Skip to main content

RefError

Enum RefError 

Source
#[non_exhaustive]
pub enum RefError { External { ref_str: String, }, TargetNotFound { ref_str: String, }, Cycle { ref_str: String, }, SiblingKeysIgnored { ref_str: String, }, }
Expand description

Non-fatal error for a specific $ref pointer.

The resolver handled these gracefully by preserving the raw $ref object in the output, but the reference was not expanded.

Use ref_str() to extract the $ref value without pattern matching.

§Variants

VariantCauseRaw $ref preserved?
ExternalURI like https://… or ./file.jsonYes
TargetNotFoundJSON Pointer resolves to nothingYes
CycleAlready visiting this ref (recursion loop)Yes
SiblingKeysIgnoredResolved target is not an object; siblings droppedNo (ref resolved)

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

External

External URI reference — not supported by this resolver.

Produced when a $ref value does not start with #. Examples: https://example.com/schema.json, ./common.yaml#/Foo.

Fields

§ref_str: String

The full $ref string (e.g. "https://example.com/schema.json").

§

TargetNotFound

Internal reference target not found in the document.

The $ref starts with # but the JSON Pointer does not resolve to any value in the root document.

Fields

§ref_str: String

The full $ref string (e.g. "#/components/schemas/Missing").

§

Cycle

Circular reference detected — kept as raw $ref to break the cycle.

The target exists but is already being resolved in the current call stack. The raw $ref object is preserved to prevent infinite recursion.

Fields

§ref_str: String

The full $ref string (e.g. "#/components/schemas/Node").

§

SiblingKeysIgnored

Sibling keys alongside $ref were dropped because the resolved target is not a JSON object and merging is impossible.

The $ref itself was successfully resolved, but any sibling keys (e.g. description, title) present in the same object were lost because they cannot be merged into a non-object value.

Fields

§ref_str: String

The full $ref string (e.g. "#/definitions/status").

Implementations§

Source§

impl RefError

Source

pub fn ref_str(&self) -> &str

Returns the $ref string that caused this error.

This is a convenience accessor that avoids pattern matching when you only need the ref string regardless of the error variant.

§Example
use openapi_deref::RefError;

let err = RefError::TargetNotFound { ref_str: "#/missing".into() };
assert_eq!(err.ref_str(), "#/missing");

Trait Implementations§

Source§

impl Clone for RefError

Source§

fn clone(&self) -> RefError

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 RefError

Source§

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

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

impl Display for RefError

Source§

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

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

impl Error for RefError

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 RefError

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for RefError

Source§

impl StructuralPartialEq for RefError

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