Skip to main content

Interpreter

Struct Interpreter 

Source
pub struct Interpreter<'a> { /* private fields */ }
Expand description

The Interpreter transforms raw parsed XML schema data into semantically meaningful Rust-compatible type metadata.

It operates on a Schemas structure produced by the Parser and produces a MetaTypes structure, which is the central format used for code generation.

This abstraction allows the intermediate schema format to be reshaped into a form suitable for deterministic and idiomatic Rust code generation.

Implementations§

Source§

impl<'a> Interpreter<'a>

Source

pub fn new(schemas: &'a Schemas) -> Self

Create a new Interpreter instance using the passed schemas reference.

Source

pub fn with_type<I, T>(self, ident: I, type_: T) -> Result<Self, Error>
where I: Into<TypeIdent> + Debug, T: Into<MetaType> + Debug,

Add a custom MetaType information for the passed identifier to the resulting MetaTypes structure.

§Errors

Returns a suitable Error if the operation was not successful.

Source

pub fn with_typedef<I, T>(self, ident: I, type_: T) -> Result<Self, Error>
where I: Into<TypeIdent> + Debug, T: Into<TypeIdent> + Debug,

Add a simple type definition to the resulting MetaTypes structure using ident as identifier for the new type and type_ as target type for the type definition.

§Errors

Returns a suitable Error if the operation was not successful.

Source

pub fn with_buildin_types(self) -> Result<Self, Error>

Adds the default build-in types to the resulting MetaTypes structure.

§Errors

Returns a suitable Error if the operation was not successful.

Source

pub fn with_default_typedefs(self) -> Result<Self, Error>

Adds the type definitions for common XML types (like xs:string or xs:int) to the resulting MetaTypes structure.

§Errors

Returns a suitable Error if the operation was not successful.

Source

pub fn with_xs_any_type(self) -> Result<Self, Error>

Adds a default type definition for xs:anyType.

§Errors

Returns a suitable Error if the operation was not successful.

Source

pub fn with_xs_any_simple_type(self) -> Result<Self, Error>

Adds a default type definition for xs:anySimpleType.

§Errors

Returns a suitable Error if the operation was not successful.

Source

pub fn with_qname_type(self) -> Result<Self, Error>

Add a type definition for xs:QName that uses the xsd_parser_types::xml::QName type.

Source

pub fn with_qname_type_from(self, path: &str) -> Result<Self, Error>

Add a type definition for xs:QName that uses the type defined at the passed path.

Source

pub fn with_num_big_int(self) -> Result<Self, Error>

Add type definitions for numeric XML types (like xs:int) that uses num::BigInt and num::BigUint instead of build-in integer types.

§Errors

Returns a suitable Error if the operation was not successful.

Source

pub fn with_nonzero_typedefs(self) -> Result<Self, Error>

Add type definitions for numeric XML types (like xs:positiveInteger) that uses ::core::num::NonZeroIsize and ::core::num::NonZeroUsize instead of the simple integer types.

§Errors

Returns a suitable Error if the operation was not successful.

Source

pub fn with_naming<X>(self, naming: X) -> Self
where X: Naming + 'static,

Set the Naming trait that is used to generate and format names.

This accepts any type that implements the Naming trait. If you want to use an already boxed version have a look at with_naming_boxed.

Source

pub fn with_naming_boxed(self, naming: Box<dyn Naming>) -> Self

Set the Naming trait that is used to generate and format names.

This accepts only boxed Naming trait. For easier use you can use with_naming instead.

Source

pub fn finish(self) -> Result<(MetaTypes, IdentCache), Error>

Finishes the interpretation of the Schemas structure and returns the MetaTypes structure with the generated type information.

§Errors

Returns a suitable Error if the operation was not successful.

Trait Implementations§

Source§

impl<'a> Debug for Interpreter<'a>

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for Interpreter<'a>

§

impl<'a> !RefUnwindSafe for Interpreter<'a>

§

impl<'a> !Send for Interpreter<'a>

§

impl<'a> !Sync for Interpreter<'a>

§

impl<'a> Unpin for Interpreter<'a>

§

impl<'a> UnsafeUnpin for Interpreter<'a>

§

impl<'a> !UnwindSafe for Interpreter<'a>

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<X> AsAny for X
where X: 'static,

Source§

fn into_any(self: Box<X>) -> Box<dyn Any>

Convert the boxed object into a boxed any.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Get a reference to the current object as Any.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Get a mutable reference to the current object as Any.
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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. 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
Source§

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