Skip to main content

ValidationError

Enum ValidationError 

Source
pub enum ValidationError {
Show 38 variants UnsupportedSchemaVersion { version: String, supported: String, }, NoModuleName, DuplicateModuleName { module: String, }, InvalidModuleName { name: String, reason: &'static str, }, ReservedKeyword { name: String, }, InvalidIdentifier { name: String, reason: &'static str, }, DuplicateTypeName { name: String, first: String, second: String, }, DuplicateFunctionName { name: String, first: String, second: String, }, NameCollisionWithErrorDomain { name: String, function: String, domain: String, }, DuplicateErrorCodeName { name: String, first: String, second: String, }, SymbolCollision { symbol: String, first: String, second: String, }, DuplicateParamName { module: String, function: String, param: String, }, CancellableNotAsync { module: String, function: String, }, ThrowsWithoutErrorDomain { module: String, function: String, }, AsyncIteratorReturn { module: String, function: String, }, ErrorDomainMissingName { module: String, }, DuplicateErrorCode { module: String, value: i32, }, InvalidErrorCode { module: String, name: String, }, EmptyStruct { module: String, name: String, }, DuplicateStructField { struct_name: String, field: String, }, EmptyEnum { module: String, name: String, }, DuplicateEnumVariant { enum_name: String, variant: String, }, DuplicateEnumVariantField { enum_name: String, variant: String, field: String, }, DuplicateEnumValue { enum_name: String, value: i32, }, EmptyInterface { module: String, name: String, }, DuplicateInterfaceMember { interface: String, name: String, }, ConstructorHasReturn { interface: String, constructor: String, }, AsyncConstructor { interface: String, constructor: String, }, EmptyCallbackInterface { module: String, name: String, }, DuplicateCallbackMethod { interface: String, name: String, }, InvalidCallbackMethod { interface: String, method: String, reason: &'static str, }, UnknownTypeRef { name: String, }, QualifiedTypeRef { name: String, }, UnsupportedPrimitive { name: String, }, InvalidMapKey { key_type: String, }, InterfaceInInvalidPosition { name: String, location: String, }, CallbackInterfaceInInvalidPosition { name: String, location: String, }, IteratorInInvalidPosition { location: String, },
}
Expand description

Every way an Api can fail validation.

validate collects every variant it encounters. Each variant carries the names needed to render an actionable diagnostic, and the #[error]/#[diagnostic] attributes supply the message and help text shown to the user. Module fields hold the module’s dotted path (outer.inner). The variant serializes as an object whose code is the variant name, with the variant’s fields alongside (the shape of weaveffi validate --format json failures).

Variants§

§

UnsupportedSchemaVersion

The document declares a schema version this build doesn’t support.

Fields

§version: String

Version requested by the document.

§supported: String

Comma-separated list of versions this build accepts.

§

NoModuleName

A module is missing its required name field.

§

DuplicateModuleName

Two sibling modules share a name.

Fields

§module: String

Dotted path of the duplicated module.

§

InvalidModuleName

A module name is not a valid identifier.

Fields

§name: String

The rejected module name.

§reason: &'static str

Why the name was rejected.

§

ReservedKeyword

A name matches a reserved keyword in one of the target languages.

Fields

§name: String

The reserved name.

§

InvalidIdentifier

An identifier is malformed.

Fields

§name: String

The rejected identifier.

§reason: &'static str

Why the identifier was rejected.

§

DuplicateTypeName

Two types (records, enums, interfaces, callback interfaces, or error domains) share a name.

Type names are global: generators emit flat per-language type names and a reference names a type by its bare name, so two types called Config would collide in generated code and make references ambiguous.

Fields

§name: String

The colliding type name.

§first: String

Module path of the first declaration.

§second: String

Module path of the second declaration.

§

DuplicateFunctionName

Two free functions share a name.

Function names are global: several targets flatten every module’s functions into one namespace, so a.open and b.open would collide there.

Fields

§name: String

The colliding function name.

§first: String

Module path of the first declaration.

§second: String

Module path of the second declaration.

§

NameCollisionWithErrorDomain

A free function has the same name as an error domain.

Fields

§name: String

The shared name.

§function: String

Module path of the function.

§domain: String

Module path of the error domain.

§

DuplicateErrorCodeName

Two error codes share a name.

Code names are global: backends with flat namespaces (Python, Node, Go) derive one error class or constant per code, so NotFound in two domains would collide in generated code.

Fields

§name: String

The colliding code name.

§first: String

Domain of the first declaration, as module.Domain.

§second: String

Domain of the second declaration, as module.Domain.

§

SymbolCollision

Two declarations lower to the same C identifier.

Every function, type, constant, and runtime name in the C ABI starts with the library prefix and is flattened from its module path, so m.x_y, m.x.y, and m_x.y all become {prefix}_m_x_y, and an async foo’s completion type {prefix}_m_foo_callback collides with a function named foo_callback.

Fields

§symbol: String

The colliding C identifier.

§first: String

The declaration that claimed the identifier first.

§second: String

The declaration that collided with it.

§

DuplicateParamName

Two parameters of one function share a name.

Fields

§module: String

Module that contains the function.

§function: String

Function that contains the colliding parameters.

§param: String

Duplicated parameter name.

§

CancellableNotAsync

A synchronous callable declares cancellable: true.

Fields

§module: String

Module that contains the function.

§function: String

The offending function.

§

ThrowsWithoutErrorDomain

A function or callback-interface method declares throws: true but no error domain is in scope.

Fields

§module: String

Module that contains the function.

§function: String

Function marked throws with no domain in scope.

§

AsyncIteratorReturn

An async function tries to return an iterator, which has no async ABI.

Fields

§module: String

Module that contains the function.

§function: String

Async function with the iterator return.

§

ErrorDomainMissingName

An error domain in the named module is missing its name field.

Fields

§module: String

Module that declares the error domain.

§

DuplicateErrorCode

Two error codes in one domain share a numeric value.

Fields

§module: String

Module that declares the error domain.

§value: i32

Conflicting numeric error code.

§

InvalidErrorCode

An error code uses a reserved value: 0 means success and the negative range belongs to the runtime’s trap codes.

Fields

§module: String

Module that declares the error domain.

§name: String

Error code name with the invalid value.

§

EmptyStruct

A struct declares no fields.

Fields

§module: String

Module that contains the struct.

§name: String

Name of the empty struct.

§

DuplicateStructField

Two fields of one struct share a name.

Fields

§struct_name: String

Struct that contains the colliding fields.

§field: String

Duplicated field name.

§

EmptyEnum

An enum declares no variants.

Fields

§module: String

Module that contains the enum.

§name: String

Name of the empty enum.

§

DuplicateEnumVariant

Two variants of one enum share a name.

Fields

§enum_name: String

Enum that contains the colliding variants.

§variant: String

Duplicated variant name.

§

DuplicateEnumVariantField

Two associated fields of one rich enum variant share a name.

Fields

§enum_name: String

Enum that contains the variant.

§variant: String

Variant that contains the colliding fields.

§field: String

Duplicated associated field name.

§

DuplicateEnumValue

Two variants of one enum share a numeric discriminant.

Fields

§enum_name: String

Enum that contains the variants.

§value: i32

Conflicting numeric discriminant.

§

EmptyInterface

An interface declares no members at all.

Fields

§module: String

Module that contains the interface.

§name: String

Name of the empty interface.

§

DuplicateInterfaceMember

Two members (constructors, methods, or statics) of one interface share a name.

Fields

§interface: String

Interface that contains the colliding members.

§name: String

Duplicated member name.

§

ConstructorHasReturn

An interface constructor declares an explicit return type.

Fields

§interface: String

Interface that declares the constructor.

§constructor: String

The offending constructor.

§

AsyncConstructor

An interface constructor is marked async.

Fields

§interface: String

Interface that declares the constructor.

§constructor: String

The offending constructor.

§

EmptyCallbackInterface

A callback interface declares no methods.

Fields

§module: String

Module that contains the callback interface.

§name: String

Name of the empty callback interface.

§

DuplicateCallbackMethod

Two methods of one callback interface share a name.

Fields

§interface: String

Callback interface that contains the colliding methods.

§name: String

Duplicated method name.

§

InvalidCallbackMethod

A callback-interface method uses a flag or return type the callback ABI can’t carry. The reason names the offending feature.

Fields

§interface: String

Callback interface that declares the method.

§method: String

The offending method.

§reason: &'static str

Why the method was rejected.

§

UnknownTypeRef

A type reference names a struct, enum, interface, or callback interface that doesn’t exist.

Fields

§name: String

Unresolved type name.

§

QualifiedTypeRef

A type reference is module-qualified (a.b.T).

Fields

§name: String

The dotted name as written.

§

UnsupportedPrimitive

A type reference names a primitive WeaveFFI doesn’t support.

Fields

§name: String

The primitive’s name as written.

§

InvalidMapKey

A map uses a key type the C ABI can’t represent.

Fields

§key_type: String

Rejected key type, rendered as it appears in the IDL.

§

InterfaceInInvalidPosition

An interface reference appears as a map key.

Fields

§name: String

The referenced interface name.

§location: String

Position where the interface reference appeared.

§

CallbackInterfaceInInvalidPosition

A callback-interface type appears in a position other than a callable parameter.

Fields

§name: String

The referenced callback interface name.

§location: String

Position where the reference appeared.

§

IteratorInInvalidPosition

An iterator type appears somewhere other than a function return.

Fields

§location: String

Position where the iterator type appeared.

Trait Implementations§

Source§

impl Debug for ValidationError

Source§

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

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

impl Diagnostic for ValidationError

Source§

fn help(&self) -> Option<Box<dyn Display + '_>>

Additional help text related to this Diagnostic. Do you have any advice for the poor soul who’s just run into this issue?
Source§

fn code<'a>(&'a self) -> Option<Box<dyn Display + 'a>>

Unique diagnostic code that can be used to look up more information about this Diagnostic. Ideally also globally unique, and documented in the toplevel crate’s documentation for easy searching. Rust path format (foo::bar::baz) is recommended, but more classic codes like E0123 or enums will work just fine.
Source§

fn severity(&self) -> Option<Severity>

Diagnostic severity. This may be used by ReportHandlers to change the display format of this diagnostic. Read more
Source§

fn url<'a>(&'a self) -> Option<Box<dyn Display + 'a>>

URL to visit for a more detailed explanation/help about this Diagnostic.
Source§

fn source_code(&self) -> Option<&dyn SourceCode>

Source code to apply this Diagnostic’s Diagnostic::labels to.
Source§

fn labels(&self) -> Option<Box<dyn Iterator<Item = LabeledSpan> + '_>>

Labels to apply to this Diagnostic’s Diagnostic::source_code
Source§

fn related<'a>( &'a self, ) -> Option<Box<dyn Iterator<Item = &'a dyn Diagnostic> + 'a>>

Additional related Diagnostics.
Source§

fn diagnostic_source(&self) -> Option<&dyn Diagnostic>

The cause of the error.
Source§

impl Display for ValidationError

Source§

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

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

impl Error for ValidationError

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 Serialize for ValidationError

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

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> ErasedDestructor for T
where T: 'static,

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<D> OwoColorize for D

Source§

fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>
where C: Color,

Set the foreground color generically Read more
Source§

fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>
where C: Color,

Set the background color generically. Read more
Source§

fn black(&self) -> FgColorDisplay<'_, Black, Self>

Change the foreground color to black
Source§

fn on_black(&self) -> BgColorDisplay<'_, Black, Self>

Change the background color to black
Source§

fn red(&self) -> FgColorDisplay<'_, Red, Self>

Change the foreground color to red
Source§

fn on_red(&self) -> BgColorDisplay<'_, Red, Self>

Change the background color to red
Source§

fn green(&self) -> FgColorDisplay<'_, Green, Self>

Change the foreground color to green
Source§

fn on_green(&self) -> BgColorDisplay<'_, Green, Self>

Change the background color to green
Source§

fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>

Change the foreground color to yellow
Source§

fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>

Change the background color to yellow
Source§

fn blue(&self) -> FgColorDisplay<'_, Blue, Self>

Change the foreground color to blue
Source§

fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>

Change the background color to blue
Source§

fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to magenta
Source§

fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to magenta
Source§

fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to purple
Source§

fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to purple
Source§

fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>

Change the foreground color to cyan
Source§

fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>

Change the background color to cyan
Source§

fn white(&self) -> FgColorDisplay<'_, White, Self>

Change the foreground color to white
Source§

fn on_white(&self) -> BgColorDisplay<'_, White, Self>

Change the background color to white
Source§

fn default_color(&self) -> FgColorDisplay<'_, Default, Self>

Change the foreground color to the terminal default
Source§

fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>

Change the background color to the terminal default
Source§

fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>

Change the foreground color to bright black
Source§

fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>

Change the background color to bright black
Source§

fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>

Change the foreground color to bright red
Source§

fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>

Change the background color to bright red
Source§

fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>

Change the foreground color to bright green
Source§

fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>

Change the background color to bright green
Source§

fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>

Change the foreground color to bright yellow
Source§

fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>

Change the background color to bright yellow
Source§

fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>

Change the foreground color to bright blue
Source§

fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>

Change the background color to bright blue
Source§

fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright magenta
Source§

fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright magenta
Source§

fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright purple
Source§

fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright purple
Source§

fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>

Change the foreground color to bright cyan
Source§

fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>

Change the background color to bright cyan
Source§

fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>

Change the foreground color to bright white
Source§

fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>

Change the background color to bright white
Source§

fn bold(&self) -> BoldDisplay<'_, Self>

Make the text bold
Source§

fn dimmed(&self) -> DimDisplay<'_, Self>

Make the text dim
Source§

fn italic(&self) -> ItalicDisplay<'_, Self>

Make the text italicized
Source§

fn underline(&self) -> UnderlineDisplay<'_, Self>

Make the text underlined
Make the text blink
Make the text blink (but fast!)
Source§

fn reversed(&self) -> ReversedDisplay<'_, Self>

Swap the foreground and background colors
Source§

fn hidden(&self) -> HiddenDisplay<'_, Self>

Hide the text
Source§

fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>

Cross out the text
Source§

fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the foreground color at runtime. Only use if you do not know which color will be used at compile-time. If the color is constant, use either OwoColorize::fg or a color-specific method, such as OwoColorize::green, Read more
Source§

fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the background color at runtime. Only use if you do not know what color to use at compile-time. If the color is constant, use either OwoColorize::bg or a color-specific method, such as OwoColorize::on_yellow, Read more
Source§

fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the foreground color to a specific RGB value.
Source§

fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the background color to a specific RGB value.
Source§

fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>

Sets the foreground color to an RGB value.
Source§

fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>

Sets the background color to an RGB value.
Source§

fn style(&self, style: Style) -> Styled<&Self>

Apply a runtime-determined style
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 = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

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.