pub struct Error { /* private fields */ }
Expand description
An error encountered during attribute parsing.
Given that most errors darling encounters represent code bugs in dependent crates, the internal structure of the error is deliberately opaque.
Implementations
sourceimpl Error
impl Error
Error creation functions
sourcepub fn custom<T>(msg: T) -> Error where
T: Display,
pub fn custom<T>(msg: T) -> Error where
T: Display,
Creates a new error with a custom message.
sourcepub fn duplicate_field(name: &str) -> Error
pub fn duplicate_field(name: &str) -> Error
Creates a new error for a field that appears twice in the input.
sourcepub fn duplicate_field_path(path: &Path) -> Error
pub fn duplicate_field_path(path: &Path) -> Error
Creates a new error for a field that appears twice in the input. Helper to avoid repeating the syn::Path to String conversion.
sourcepub fn missing_field(name: &str) -> Error
pub fn missing_field(name: &str) -> Error
Creates a new error for a non-optional field that does not appear in the input.
sourcepub fn unknown_field(name: &str) -> Error
pub fn unknown_field(name: &str) -> Error
Creates a new error for a field name that appears in the input but does not correspond to a known field.
sourcepub fn unknown_field_path(path: &Path) -> Error
pub fn unknown_field_path(path: &Path) -> Error
Creates a new error for a field name that appears in the input but does not correspond to a known field. Helper to avoid repeating the syn::Path to String conversion.
sourcepub fn unknown_field_with_alts<'a, T, I>(field: &str, alternates: I) -> Error where
T: 'a + AsRef<str>,
I: IntoIterator<Item = &'a T>,
pub fn unknown_field_with_alts<'a, T, I>(field: &str, alternates: I) -> Error where
T: 'a + AsRef<str>,
I: IntoIterator<Item = &'a T>,
Creates a new error for a field name that appears in the input but does not correspond to a known attribute. The second argument is the list of known attributes; if a similar name is found that will be shown in the emitted error message.
sourcepub fn unsupported_shape(shape: &str) -> Error
pub fn unsupported_shape(shape: &str) -> Error
Creates a new error for a struct or variant that does not adhere to the supported shape.
pub fn unsupported_format(format: &str) -> Error
sourcepub fn unexpected_type(ty: &str) -> Error
pub fn unexpected_type(ty: &str) -> Error
Creates a new error for a field which has an unexpected literal type.
sourcepub fn unexpected_lit_type(lit: &Lit) -> Error
pub fn unexpected_lit_type(lit: &Lit) -> Error
Creates a new error for a field which has an unexpected literal type. This will automatically
extract the literal type name from the passed-in Lit
and set the span to encompass only the
literal value.
Usage
This is most frequently used in overrides of the FromMeta::from_value
method.
use darling::{FromMeta, Error, Result};
use syn::{Lit, LitStr};
pub struct Foo(String);
impl FromMeta for Foo {
fn from_value(value: &Lit) -> Result<Self> {
if let Lit::Str(ref lit_str) = *value {
Ok(Foo(lit_str.value()))
} else {
Err(Error::unexpected_lit_type(value))
}
}
}
sourcepub fn unknown_value(value: &str) -> Error
pub fn unknown_value(value: &str) -> Error
Creates a new error for a value which doesn’t match a set of expected literals.
sourcepub fn too_few_items(min: usize) -> Error
pub fn too_few_items(min: usize) -> Error
Creates a new error for a list which did not get enough items to proceed.
sourcepub fn too_many_items(max: usize) -> Error
pub fn too_many_items(max: usize) -> Error
Creates a new error when a list got more items than it supports. The max
argument
is the largest number of items the receiver could accept.
sourceimpl Error
impl Error
Error instance methods
sourcepub fn has_span(&self) -> bool
pub fn has_span(&self) -> bool
Check if this error is associated with a span in the token stream.
sourcepub fn with_span<T>(self, node: &T) -> Error where
T: Spanned,
pub fn with_span<T>(self, node: &T) -> Error where
T: Spanned,
Tie a span to the error if none is already present. This is used in darling::FromMeta
and other traits to attach errors to the most specific possible location in the input
source code.
All darling
-built impls, either from the crate or from the proc macro, will call this
when appropriate during parsing, so it should not be necessary to call this unless you have
overridden:
FromMeta::from_meta
FromMeta::from_nested_meta
FromMeta::from_value
sourcepub fn at<T>(self, location: T) -> Error where
T: Display,
pub fn at<T>(self, location: T) -> Error where
T: Display,
Adds a location to the error, such as a field or variant. Locations must be added in reverse order of specificity.
sourcepub fn at_path(self, path: &Path) -> Error
pub fn at_path(self, path: &Path) -> Error
Adds a location to the error, such as a field or variant. Locations must be added in reverse order of specificity. This is a helper function to avoid repeating path to string logic.
sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
Gets the number of individual errors in this error.
This function never returns 0
, as it’s impossible to construct
a multi-error from an empty Vec
.
sourcepub fn write_errors(self) -> TokenStream
pub fn write_errors(self) -> TokenStream
Write this error and any children as compile errors into a TokenStream
to
be returned by the proc-macro.
The behavior of this method will be slightly different if the diagnostics
feature
is enabled: In that case, the diagnostics will be emitted immediately by this call,
and an empty TokenStream
will be returned.
Return these tokens unmodified to avoid disturbing the attached span information.
Usage
// in your proc-macro function
let opts = match MyOptions::from_derive_input(&ast) {
Ok(val) => val,
Err(err) => {
return err.write_errors();
}
}
Trait Implementations
sourceimpl Error for Error
impl Error for Error
sourcefn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
sourcefn cause(&self) -> Option<&dyn Error>
fn cause(&self) -> Option<&dyn Error>
replaced by Error::source, which can support downcasting
sourceimpl IntoIterator for Error
impl IntoIterator for Error
Auto Trait Implementations
impl RefUnwindSafe for Error
impl !Send for Error
impl !Sync for Error
impl Unpin for Error
impl UnwindSafe for Error
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more