pub struct Issue {
pub level: Level,
pub code: Option<String>,
pub message: String,
pub notes: Vec<String>,
pub help: Option<String>,
pub link: Option<String>,
pub annotations: Vec<Annotation>,
pub edits: HashMap<FileId, Vec<TextEdit>>,
}Expand description
Represents an issue identified in the code.
Fields§
§level: LevelThe severity level of the issue.
code: Option<String>An optional code associated with the issue.
message: StringThe main message describing the issue.
notes: Vec<String>Additional notes related to the issue.
help: Option<String>An optional help message suggesting possible solutions or further actions.
link: Option<String>An optional link to external resources for more information about the issue.
annotations: Vec<Annotation>Annotations associated with the issue, providing additional context or highlighting specific code spans.
edits: HashMap<FileId, Vec<TextEdit>>Text edits that can be applied to fix the issue, grouped by file.
Implementations§
Source§impl Issue
impl Issue
Sourcepub fn new(level: Level, message: impl Into<String>) -> Self
pub fn new(level: Level, message: impl Into<String>) -> Self
Creates a new issue with the given level and message.
§Examples
use mago_reporting::{Issue, Level};
let issue = Issue::new(Level::Error, "This is an error");Sourcepub fn error(message: impl Into<String>) -> Self
pub fn error(message: impl Into<String>) -> Self
Creates a new error issue with the given message.
§Examples
use mago_reporting::Issue;
let issue = Issue::error("This is an error");Sourcepub fn warning(message: impl Into<String>) -> Self
pub fn warning(message: impl Into<String>) -> Self
Creates a new warning issue with the given message.
§Examples
use mago_reporting::Issue;
let issue = Issue::warning("This is a warning");Sourcepub fn help(message: impl Into<String>) -> Self
pub fn help(message: impl Into<String>) -> Self
Creates a new help issue with the given message.
§Examples
use mago_reporting::Issue;
let issue = Issue::help("This is a help message");Sourcepub fn note(message: impl Into<String>) -> Self
pub fn note(message: impl Into<String>) -> Self
Creates a new note issue with the given message.
§Examples
use mago_reporting::Issue;
let issue = Issue::note("This is a note");Sourcepub fn with_code(self, code: impl Into<String>) -> Self
pub fn with_code(self, code: impl Into<String>) -> Self
Adds a code to this issue.
§Examples
use mago_reporting::{Issue, Level};
let issue = Issue::error("This is an error").with_code("E0001");Sourcepub fn with_annotation(self, annotation: Annotation) -> Self
pub fn with_annotation(self, annotation: Annotation) -> Self
Add an annotation to this issue.
§Examples
use mago_reporting::{Issue, Annotation, AnnotationKind};
use mago_database::file::FileId;
use mago_span::Span;
use mago_span::Position;
let file = FileId::zero();
let start = Position::new(0);
let end = Position::new(5);
let span = Span::new(file, start, end);
let issue = Issue::error("This is an error").with_annotation(Annotation::primary(span));pub fn with_annotations( self, annotation: impl IntoIterator<Item = Annotation>, ) -> Self
Sourcepub fn with_note(self, note: impl Into<String>) -> Self
pub fn with_note(self, note: impl Into<String>) -> Self
Add a note to this issue.
§Examples
use mago_reporting::Issue;
let issue = Issue::error("This is an error").with_note("This is a note");Sourcepub fn with_help(self, help: impl Into<String>) -> Self
pub fn with_help(self, help: impl Into<String>) -> Self
Add a help message to this issue.
This is useful for providing additional context to the user on how to resolve the issue.
§Examples
use mago_reporting::Issue;
let issue = Issue::error("This is an error").with_help("This is a help message");Sourcepub fn with_link(self, link: impl Into<String>) -> Self
pub fn with_link(self, link: impl Into<String>) -> Self
Add a link to this issue.
§Examples
use mago_reporting::Issue;
let issue = Issue::error("This is an error").with_link("https://example.com");Sourcepub fn with_edit(self, file_id: FileId, edit: TextEdit) -> Self
pub fn with_edit(self, file_id: FileId, edit: TextEdit) -> Self
Add a single edit to this issue.
Sourcepub fn with_file_edits(self, file_id: FileId, edits: Vec<TextEdit>) -> Self
pub fn with_file_edits(self, file_id: FileId, edits: Vec<TextEdit>) -> Self
Add multiple edits to this issue.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Issue
impl<'de> Deserialize<'de> for Issue
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl FromIterator<Issue> for IssueCollection
impl FromIterator<Issue> for IssueCollection
Source§impl IntoIterator for Issue
impl IntoIterator for Issue
impl Eq for Issue
impl StructuralPartialEq for Issue
Auto Trait Implementations§
impl Freeze for Issue
impl RefUnwindSafe for Issue
impl Send for Issue
impl Sync for Issue
impl Unpin for Issue
impl UnwindSafe for Issue
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);