Struct proc_macro::Span
1.29.0 · source · pub struct Span(_);
Expand description
源代码区域以及宏展开信息。
Implementations§
source§impl Span
impl Span
sourcepub fn def_site() -> Span
🔬This is a nightly-only experimental API. (proc_macro_def_site
#54724)
pub fn def_site() -> Span
proc_macro_def_site
#54724)在宏定义站点解析的跨度。
sourcepub fn call_site() -> Span
pub fn call_site() -> Span
当前过程宏的调用范围。 以此范围创建的标识符将被解析,就像它们是直接在宏调用位置 (调用站点卫生) 上编写的一样,宏调用站点上的其他代码也将能够引用它们。
1.45.0 · sourcepub fn mixed_site() -> Span
pub fn mixed_site() -> Span
代表 macro_rules
卫生状况的跨度,有时在宏定义站点 (本地变量,标签,$crate
) 解析,有时在宏调用站点 (其他所有解析) 解析。
跨度位置取自调用站点。
sourcepub fn source_file(&self) -> SourceFile
🔬This is a nightly-only experimental API. (proc_macro_span
#54725)
pub fn source_file(&self) -> SourceFile
proc_macro_span
#54725)此跨度指向的原始源文件。
sourcepub fn parent(&self) -> Option<Span>
🔬This is a nightly-only experimental API. (proc_macro_span
#54725)
pub fn parent(&self) -> Option<Span>
proc_macro_span
#54725)上一个宏的 tokens 的 Span
(如果有的话) 是从中生成 self
的。
sourcepub fn source(&self) -> Span
🔬This is a nightly-only experimental API. (proc_macro_span
#54725)
pub fn source(&self) -> Span
proc_macro_span
#54725)生成 self
的原始源代码的范围。
如果此 Span
不是由其他宏扩展生成的,则返回值与 *self
相同。
sourcepub fn byte_range(&self) -> Range<usize>
🔬This is a nightly-only experimental API. (proc_macro_span
#54725)
pub fn byte_range(&self) -> Range<usize>
proc_macro_span
#54725)返回源文件中 span 的字节位置范围。
sourcepub fn start(&self) -> LineColumn
🔬This is a nightly-only experimental API. (proc_macro_span
#54725)
pub fn start(&self) -> LineColumn
proc_macro_span
#54725)在源文件中获取此范围的起始 line/column。
sourcepub fn end(&self) -> LineColumn
🔬This is a nightly-only experimental API. (proc_macro_span
#54725)
pub fn end(&self) -> LineColumn
proc_macro_span
#54725)在源文件中获取此跨度的结尾 line/column。
sourcepub fn before(&self) -> Span
🔬This is a nightly-only experimental API. (proc_macro_span_shrink
#87552)
pub fn before(&self) -> Span
proc_macro_span_shrink
#87552)创建一个直接指向此跨度之前的空跨度。
sourcepub fn after(&self) -> Span
🔬This is a nightly-only experimental API. (proc_macro_span_shrink
#87552)
pub fn after(&self) -> Span
proc_macro_span_shrink
#87552)创建一个直接指向此跨度之后的空跨度。
sourcepub fn join(&self, other: Span) -> Option<Span>
🔬This is a nightly-only experimental API. (proc_macro_span
#54725)
pub fn join(&self, other: Span) -> Option<Span>
proc_macro_span
#54725)创建一个包含 self
和 other
的新跨度。
如果 self
和 other
来自不同的文件,则返回 None
。
1.45.0 · sourcepub fn resolved_at(&self, other: Span) -> Span
pub fn resolved_at(&self, other: Span) -> Span
创建一个具有与 self
相同的 line/column 信息的新跨度,但是可以像在 other
一样解析符号。
1.45.0 · sourcepub fn located_at(&self, other: Span) -> Span
pub fn located_at(&self, other: Span) -> Span
创建一个具有与 self
相同的名称解析行为但具有 other
的 line/column 信息的新跨度。
sourcepub fn eq(&self, other: &Span) -> bool
🔬This is a nightly-only experimental API. (proc_macro_span
#54725)
pub fn eq(&self, other: &Span) -> bool
proc_macro_span
#54725)比较两个跨度以查看它们是否相等。
1.66.0 · sourcepub fn source_text(&self) -> Option<String>
pub fn source_text(&self) -> Option<String>
返回跨度后面的源文本。 这将保留原始源代码,包括空格和注释。 仅当范围与实际源代码相对应时,它才返回结果。
Note: 宏的可观察结果应仅依赖于 tokens,而不依赖于此源文本。
该函数的结果是尽力而为,仅用于诊断。
sourcepub fn error<T: Into<String>>(self, message: T) -> Diagnostic
🔬This is a nightly-only experimental API. (proc_macro_diagnostic
#54140)
pub fn error<T: Into<String>>(self, message: T) -> Diagnostic
proc_macro_diagnostic
#54140)使用跨度为 self
的给定 message
创建一个新的 Diagnostic
。
sourcepub fn warning<T: Into<String>>(self, message: T) -> Diagnostic
🔬This is a nightly-only experimental API. (proc_macro_diagnostic
#54140)
pub fn warning<T: Into<String>>(self, message: T) -> Diagnostic
proc_macro_diagnostic
#54140)使用跨度为 self
的给定 message
创建一个新的 Diagnostic
。