Skip to main content

Spec

Struct Spec 

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

A loaded OpenAPI document plus its source path (for diagnostics).

Implementations§

Source§

impl Spec

Source

pub fn load(path: &Path) -> Result<Self>

Load and parse an OpenAPI document from a YAML or JSON file.

Source

pub fn from_parts(inner: OpenAPI, source: PathBuf) -> Self

Construct a spec directly from an already-parsed document (test helper).

Source

pub fn source(&self) -> &Path

The source path the spec was loaded from.

Source

pub fn apply_filters(&mut self, opts: &OutputOptions)

Apply the configured operation and schema filters, mutating the spec in place before lowering (see crate::filter).

Source

pub fn schemas(&self) -> &IndexMap<String, ReferenceOr<Schema>>

The component schemas declared in the document, in document order.

Source

pub fn paths(&self) -> &Paths

The paths (operations) declared in the document, in document order.

Source

pub fn servers(&self) -> &[Server]

The top-level servers declared in the document, in document order.

Source

pub fn global_security(&self) -> Option<&[SecurityRequirement]>

The document’s global security requirements, if declared. An operation with no security of its own inherits these.

Source

pub fn security_schemes(&self) -> &IndexMap<String, ReferenceOr<SecurityScheme>>

The security schemes declared under components.securitySchemes, in document order.

Source

pub fn resolve_response(&self, reference: &str) -> Result<Resolved<Response>>

Resolve a #/components/responses/<name> (possibly cross-file) reference to an owned component response plus the file it came from, following reference chains within and across documents.

Source

pub fn resolve_parameter(&self, reference: &str) -> Result<Resolved<Parameter>>

Resolve a #/components/parameters/<name> (possibly cross-file) reference to an owned component parameter plus the file it came from, following reference chains within and across documents.

Source

pub fn resolve_request_body( &self, reference: &str, ) -> Result<Resolved<RequestBody>>

Resolve a #/components/requestBodies/<name> (possibly cross-file) reference to an owned component request body plus the file it came from, following reference chains within and across documents.

Source

pub fn resolve(&self, reference: &str) -> Result<&Schema>

Resolve a $ref string to the concrete schema it names, following chains of references within this document.

Source

pub fn resolve_schema( &self, origin: Option<&str>, reference: &str, ) -> Result<Schema>

Resolve a same-document schema $ref to an owned schema, against the main document when origin is None or a referenced document otherwise.

A cross-file (file#/...) inner schema ref is intentionally rejected: a schema type reference is emitted as a named external type through the import-mapping (see the lowering pass’s schema_ref_type), never read and inlined. This method only resolves refs that stay within one document’s own #/components/schemas.

Source

pub fn external_schema_name( &self, file: &str, name: &str, reference: &str, ) -> Result<String>

The name a schema in a referenced file takes in the crate the import-mapping points at.

The two runs read the same document, so an x-rust-name there reaches both. Without this the run that generates the models emits the name the key gives, the run that generates the operations emits the schema name, and the composed crate does not build.

A miss is an error. The name would otherwise reach the output and name a type the other crate never declares.

Two names in the referenced file that give one Rust name are an error too. The run that writes the models separates them with a type-name-suffix it takes from its own config. This run cannot see that config, so it emits the plain name and reaches whichever of the two schemas kept it. That builds, and it carries the wrong type.

Trait Implementations§

Source§

impl Debug for Spec

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl !Freeze for Spec

§

impl !RefUnwindSafe for Spec

§

impl !Send for Spec

§

impl !Sync for Spec

§

impl Unpin for Spec

§

impl UnsafeUnpin for Spec

§

impl UnwindSafe for Spec

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