pub trait Diagnostic: Error {
// Provided methods
fn code<'a>(&'a self) -> Option<Box<dyn Display + 'a>> { ... }
fn severity(&self) -> Option<Severity> { ... }
fn help<'a>(&'a self) -> Option<Box<dyn Display + 'a>> { ... }
fn url<'a>(&'a self) -> Option<Box<dyn Display + 'a>> { ... }
fn source_code(&self) -> Option<&dyn SourceCode> { ... }
fn labels(&self) -> Option<Box<dyn Iterator<Item = LabeledSpan> + '_>> { ... }
fn related<'a>(
&'a self,
) -> Option<Box<dyn Iterator<Item = &'a dyn Diagnostic> + 'a>> { ... }
fn diagnostic_source(&self) -> Option<&dyn Diagnostic> { ... }
}
Expand description
Adds rich metadata to your Error that can be used by
Report
to print really nice and human-friendly error
messages.
Provided Methods§
sourcefn code<'a>(&'a self) -> Option<Box<dyn Display + 'a>>
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.
sourcefn severity(&self) -> Option<Severity>
fn severity(&self) -> Option<Severity>
Diagnostic severity. This may be used by
ReportHandler
s to change the display format
of this diagnostic.
If None
, reporters should treat this as Severity::Error
.
sourcefn help<'a>(&'a self) -> Option<Box<dyn Display + 'a>>
fn help<'a>(&'a self) -> Option<Box<dyn Display + 'a>>
Additional help text related to this Diagnostic
. Do you have any
advice for the poor soul who’s just run into this issue?
sourcefn url<'a>(&'a self) -> Option<Box<dyn Display + 'a>>
fn url<'a>(&'a self) -> Option<Box<dyn Display + 'a>>
URL to visit for a more detailed explanation/help about this
Diagnostic
.
sourcefn source_code(&self) -> Option<&dyn SourceCode>
fn source_code(&self) -> Option<&dyn SourceCode>
Source code to apply this Diagnostic
’s Diagnostic::labels
to.
sourcefn labels(&self) -> Option<Box<dyn Iterator<Item = LabeledSpan> + '_>>
fn labels(&self) -> Option<Box<dyn Iterator<Item = LabeledSpan> + '_>>
Labels to apply to this Diagnostic
’s Diagnostic::source_code
Additional related Diagnostic
s.
sourcefn diagnostic_source(&self) -> Option<&dyn Diagnostic>
fn diagnostic_source(&self) -> Option<&dyn Diagnostic>
The cause of the error.