Struct proc_macro::Span

1.29.0 · source · []
pub struct Span(_);
Expand description

A region of source code, along with macro expansion information.

Implementations

🔬This is a nightly-only experimental API. (proc_macro_def_site #54724)

A span that resolves at the macro definition site.

The span of the invocation of the current procedural macro. Identifiers created with this span will be resolved as if they were written directly at the macro call location (call-site hygiene) and other code at the macro call site will be able to refer to them as well.

A span that represents macro_rules hygiene, and sometimes resolves at the macro definition site (local variables, labels, $crate) and sometimes at the macro call site (everything else). The span location is taken from the call-site.

🔬This is a nightly-only experimental API. (proc_macro_span #54725)

The original source file into which this span points.

🔬This is a nightly-only experimental API. (proc_macro_span #54725)

The Span for the tokens in the previous macro expansion from which self was generated from, if any.

🔬This is a nightly-only experimental API. (proc_macro_span #54725)

The span for the origin source code that self was generated from. If this Span wasn’t generated from other macro expansions then the return value is the same as *self.

🔬This is a nightly-only experimental API. (proc_macro_span #54725)

Gets the starting line/column in the source file for this span.

🔬This is a nightly-only experimental API. (proc_macro_span #54725)

Gets the ending line/column in the source file for this span.

🔬This is a nightly-only experimental API. (proc_macro_span_shrink #87552)

Creates an empty span pointing to directly before this span.

🔬This is a nightly-only experimental API. (proc_macro_span_shrink #87552)

Creates an empty span pointing to directly after this span.

🔬This is a nightly-only experimental API. (proc_macro_span #54725)

Creates a new span encompassing self and other.

Returns None if self and other are from different files.

Creates a new span with the same line/column information as self but that resolves symbols as though it were at other.

Creates a new span with the same name resolution behavior as self but with the line/column information of other.

🔬This is a nightly-only experimental API. (proc_macro_span #54725)

Compares to spans to see if they’re equal.

🔬This is a nightly-only experimental API. (proc_macro_span #54725)

Returns the source text behind a span. This preserves the original source code, including spaces and comments. It only returns a result if the span corresponds to real source code.

Note: The observable result of a macro should only rely on the tokens and not on this source text. The result of this function is a best effort to be used for diagnostics only.

🔬This is a nightly-only experimental API. (proc_macro_diagnostic #54140)

Creates a new Diagnostic with the given message at the span self.

🔬This is a nightly-only experimental API. (proc_macro_diagnostic #54140)

Creates a new Diagnostic with the given message at the span self.

🔬This is a nightly-only experimental API. (proc_macro_diagnostic #54140)

Creates a new Diagnostic with the given message at the span self.

🔬This is a nightly-only experimental API. (proc_macro_diagnostic #54140)

Creates a new Diagnostic with the given message at the span self.

Trait Implementations

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more

Prints a span in a form convenient for debugging.

Formats the value using the given formatter. Read more
🔬This is a nightly-only experimental API. (proc_macro_diagnostic #54140)
Converts self into a Vec<Span>.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.