cargo_metadata::diagnostic

Struct DiagnosticSpan

Source
#[non_exhaustive]
pub struct DiagnosticSpan {
Show 13 fields pub file_name: String, pub byte_start: u32, pub byte_end: u32, pub line_start: usize, pub line_end: usize, pub column_start: usize, pub column_end: usize, pub is_primary: bool, pub text: Vec<DiagnosticSpanLine>, pub label: Option<String>, pub suggested_replacement: Option<String>, pub suggestion_applicability: Option<Applicability>, pub expansion: Option<Box<DiagnosticSpanMacroExpansion>>,
}
Expand description

A section of the source code associated with a Diagnostic

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§file_name: String

The file name or the macro name this diagnostic comes from.

§byte_start: u32

The byte offset in the file where this diagnostic starts from.

§byte_end: u32

The byte offset in the file where this diagnostic ends.

§line_start: usize

1-based. The line in the file.

§line_end: usize

1-based. The line in the file.

§column_start: usize

1-based, character offset.

§column_end: usize

1-based, character offset.

§is_primary: bool

Is this a “primary” span – meaning the point, or one of the points, where the error occurred?

There are rare cases where multiple spans are marked as primary, e.g. “immutable borrow occurs here” and “mutable borrow ends here” can be two separate spans both “primary”. Top (parent) messages should always have at least one primary span, unless it has 0 spans. Child messages may have 0 or more primary spans.

§text: Vec<DiagnosticSpanLine>

Source text from the start of line_start to the end of line_end.

§label: Option<String>

Label that should be placed at this location (if any)

§suggested_replacement: Option<String>

If we are suggesting a replacement, this will contain text that should be sliced in atop this span.

§suggestion_applicability: Option<Applicability>

If the suggestion is approximate

§expansion: Option<Box<DiagnosticSpanMacroExpansion>>

Macro invocations that created the code at this span, if any.

Trait Implementations§

Source§

impl Clone for DiagnosticSpan

Source§

fn clone(&self) -> DiagnosticSpan

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for DiagnosticSpan

Source§

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

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

impl<'de> Deserialize<'de> for DiagnosticSpan

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Hash for DiagnosticSpan

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for DiagnosticSpan

Source§

fn eq(&self, other: &DiagnosticSpan) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for DiagnosticSpan

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
Source§

impl Eq for DiagnosticSpan

Source§

impl StructuralPartialEq for DiagnosticSpan

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
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<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,