Skip to main content

ValidationError

Enum ValidationError 

Source
pub enum ValidationError {
Show 41 variants NoModuleName, DuplicateModuleName(String), InvalidModuleName(String, &'static str), DuplicateFunctionName { module: String, function: String, }, DuplicateParamName { module: String, function: String, param: String, }, ReservedKeyword(String), InvalidIdentifier(String, &'static str), ErrorDomainMissingName(String), DuplicateErrorName { module: String, name: String, }, DuplicateErrorCode { module: String, code: i32, }, InvalidErrorCode { module: String, name: String, }, NameCollisionWithErrorDomain { module: String, name: String, }, SymbolCollision { symbol: String, first: String, second: String, }, CancellableNotAsync { module: String, function: String, }, ThrowsWithoutErrorDomain { module: String, function: String, }, DuplicateTypeName { name: String, first: String, second: String, }, DuplicateErrorCodeName { name: String, first: String, second: String, }, DuplicateStructName { module: String, name: String, }, DuplicateStructField { struct_name: String, field: String, }, EmptyStruct { module: String, name: String, }, DuplicateEnumName { module: String, name: 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, }, DuplicateInterfaceName { module: String, name: String, }, DuplicateInterfaceMember { interface: String, name: String, }, EmptyInterface { module: String, name: String, }, ConstructorHasReturn { interface: String, constructor: String, }, AsyncConstructor { interface: String, constructor: String, }, InterfaceInInvalidPosition { name: String, location: String, }, UnknownTypeRef { name: String, }, InvalidMapKey { key_type: String, }, IteratorInInvalidPosition { location: String, }, DuplicateCallbackInterfaceName { module: String, name: String, }, EmptyCallbackInterface { module: String, name: String, }, DuplicateCallbackMethod { interface: String, name: String, }, InvalidCallbackMethod { interface: String, method: String, reason: &'static str, }, CallbackInterfaceInInvalidPosition { name: String, location: String, }, AsyncIteratorReturn { module: String, function: String, }, UnsupportedSchemaVersion { version: String, supported: String, },
}
Expand description

Every way an Api can fail validation.

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

Variants§

§

NoModuleName

A module is missing its required name field.

§

DuplicateModuleName(String)

Two modules share the same name.

§

InvalidModuleName(String, &'static str)

A module name is not a valid identifier; the second field explains why.

§

DuplicateFunctionName

Two functions in the same module share a name.

Fields

§module: String

Module that contains the colliding functions.

§function: String

Duplicated function name.

§

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.

§

ReservedKeyword(String)

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

§

InvalidIdentifier(String, &'static str)

An identifier is malformed; the second field explains why.

§

ErrorDomainMissingName(String)

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

§

DuplicateErrorName

Two error codes in the same module share a name.

Fields

§module: String

Module that contains the error domain.

§name: String

Duplicated error code name.

§

DuplicateErrorCode

Two error codes in the same module share a numeric value.

Fields

§module: String

Module that contains the error domain.

§code: 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 contains the error domain.

§name: String

Error code name with the invalid value.

§

NameCollisionWithErrorDomain

A function name collides with an error domain name in the same module.

Fields

§module: String

Module where the collision occurs.

§name: String

Name shared by the function and the error 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.

§

CancellableNotAsync

A synchronous callable declares cancellable: true.

Fields

§module: String

Module that contains the function.

§function: String

The offending function.

§

ThrowsWithoutErrorDomain

A function 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.

§

DuplicateTypeName

Two types (structs, enums, interfaces, or callback interfaces) share a bare name.

Type names must be unique across the whole API: generators emit flat per-language type names, and unqualified cross-module references resolve by bare name, so two types called Config would collide in generated code and make references ambiguous.

Fields

§name: String

The colliding bare type name.

§first: String

Module path of the first declaration.

§second: String

Module path of the second declaration.

§

DuplicateErrorCodeName

Two error domains declare a code with the same name.

Code names must be unique across every domain in the API: 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.

§

DuplicateStructName

Two structs in the same module share a name.

Fields

§module: String

Module that contains the structs.

§name: String

Duplicated struct name.

§

DuplicateStructField

Two fields of one struct share a name.

Fields

§struct_name: String

Struct that contains the colliding fields.

§field: String

Duplicated field name.

§

EmptyStruct

A struct declares no fields.

Fields

§module: String

Module that contains the struct.

§name: String

Name of the empty struct.

§

DuplicateEnumName

Two enums in the same module share a name.

Fields

§module: String

Module that contains the enums.

§name: String

Duplicated enum 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.

§

DuplicateInterfaceName

Two interfaces in the same module share a name.

Fields

§module: String

Module that contains the interfaces.

§name: String

Duplicated interface name.

§

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.

§

EmptyInterface

An interface declares no members at all.

Fields

§module: String

Module that contains the interface.

§name: String

Name of the empty interface.

§

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.

§

InterfaceInInvalidPosition

An interface reference appears as a map key.

Fields

§name: String

The referenced interface name.

§location: String

Position where the interface reference appeared.

§

UnknownTypeRef

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

Fields

§name: String

Unresolved type name.

§

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.

§

IteratorInInvalidPosition

An iterator type appears somewhere other than a function return.

Fields

§location: String

Position where the iterator type appeared.

§

DuplicateCallbackInterfaceName

Two callback interfaces in the same module share a name.

Fields

§module: String

Module that contains the callback interfaces.

§name: String

Duplicated callback interface name.

§

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.

§

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.

§

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.

§

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.

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

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.