Struct proc_macro::Span

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

源代码区域以及宏展开信息。

Implementations§

source§

impl Span

source

pub fn def_site() -> Span

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

在宏定义站点解析的跨度。

source

pub fn call_site() -> Span

当前过程宏的调用范围。 以此范围创建的标识符将被解析,就像它们是直接在宏调用位置 (调用站点卫生) 上编写的一样,宏调用站点上的其他代码也将能够引用它们。

1.45.0 · source

pub fn mixed_site() -> Span

代表 macro_rules 卫生状况的跨度,有时在宏定义站点 (本地变量,标签,$crate) 解析,有时在宏调用站点 (其他所有解析) 解析。

跨度位置取自调用站点。

source

pub fn source_file(&self) -> SourceFile

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

此跨度指向的原始源文件。

source

pub fn parent(&self) -> Option<Span>

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

上一个宏的 tokens 的 Span (如果有的话) 是从中生成 self 的。

source

pub fn source(&self) -> Span

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

生成 self 的原始源代码的范围。 如果此 Span 不是由其他宏扩展生成的,则返回值与 *self 相同。

source

pub fn byte_range(&self) -> Range<usize>

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

返回源文件中 span 的字节位置范围。

source

pub fn start(&self) -> LineColumn

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

在源文件中获取此范围的起始 line/column。

source

pub fn end(&self) -> LineColumn

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

在源文件中获取此跨度的结尾 line/column。

source

pub fn before(&self) -> Span

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

创建一个直接指向此跨度之前的空跨度。

source

pub fn after(&self) -> Span

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

创建一个直接指向此跨度之后的空跨度。

source

pub fn join(&self, other: Span) -> Option<Span>

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

创建一个包含 selfother 的新跨度。

如果 selfother 来自不同的文件,则返回 None

1.45.0 · source

pub fn resolved_at(&self, other: Span) -> Span

创建一个具有与 self 相同的 line/column 信息的新跨度,但是可以像在 other 一样解析符号。

1.45.0 · source

pub fn located_at(&self, other: Span) -> Span

创建一个具有与 self 相同的名称解析行为但具有 other 的 line/column 信息的新跨度。

source

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

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

比较两个跨度以查看它们是否相等。

1.66.0 · source

pub fn source_text(&self) -> Option<String>

返回跨度后面的源文本。 这将保留原始源代码,包括空格和注释。 仅当范围与实际源代码相对应时,它才返回结果。

Note: 宏的可观察结果应仅依赖于 tokens,而不依赖于此源文本。

该函数的结果是尽力而为,仅用于诊断。

source

pub fn error<T: Into<String>>(self, message: T) -> Diagnostic

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

使用跨度为 self 的给定 message 创建一个新的 Diagnostic

source

pub fn warning<T: Into<String>>(self, message: T) -> Diagnostic

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

使用跨度为 self 的给定 message 创建一个新的 Diagnostic

source

pub fn note<T: Into<String>>(self, message: T) -> Diagnostic

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

使用跨度为 self 的给定 message 创建一个新的 Diagnostic

source

pub fn help<T: Into<String>>(self, message: T) -> Diagnostic

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

使用跨度为 self 的给定 message 创建一个新的 Diagnostic

Trait Implementations§

source§

impl Clone for Span

source§

fn clone(&self) -> Span

返回值的副本。 Read more
1.0.0 · source§

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

source 执行复制分配。 Read more
source§

impl Debug for Span

以便于调试的形式打印跨度。

source§

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

使用给定的格式化程序格式化该值。 Read more
source§

impl MultiSpan for Span

source§

fn into_spans(self) -> Vec<Span>

🔬This is a nightly-only experimental API. (proc_macro_diagnostic #54140)
self 转换为 Vec<Span>
source§

impl Copy for Span

source§

impl !Send for Span

source§

impl !Sync for Span

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

获取 selfTypeIdRead more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

从拥有的值中一成不变地借用。 Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

从拥有的值中借用。 Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

返回未更改的参数。

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

调用 U::from(self)

也就是说,这种转换是 From<T> for U 实现选择执行的任何操作。

source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

获得所有权后的结果类型。
source§

fn to_owned(&self) -> T

从借用的数据创建拥有的数据,通常是通过克隆。 Read more
source§

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

使用借来的数据来替换拥有的数据,通常是通过克隆。 Read more
source§

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

§

type Error = Infallible

发生转换错误时返回的类型。
source§

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

执行转换。
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

发生转换错误时返回的类型。
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

执行转换。