pub struct Span(/* private fields */);
展开描述
源代码区域,以及宏展开信息。
实现§
Source§impl Span
impl Span
Sourcepub fn def_site() -> Span
🔬这是一个仅限 nightly 的实验性 API。(proc_macro_def_site
#54724)
pub fn def_site() -> Span
proc_macro_def_site
#54724)一个在宏定义位置解析的 span。
1.29.0 · Sourcepub fn call_site() -> Span
pub fn call_site() -> Span
当前过程宏调用的 span。使用此 span 创建的标识符将被解析为好像它们直接写在宏调用位置(调用位置卫生),并且宏调用位置的其他代码也将能够引用它们。
1.45.0 · Sourcepub fn mixed_site() -> Span
pub fn mixed_site() -> Span
一个表示 macro_rules
卫生的 span,有时在宏定义位置(局部变量、标签、$crate
)解析,有时在宏调用位置(其他所有内容)解析。span 位置取自调用位置。
Sourcepub fn source_file(&self) -> SourceFile
🔬这是一个仅限 nightly 的实验性 API。(proc_macro_span
#54725)
pub fn source_file(&self) -> SourceFile
proc_macro_span
#54725)此 span 指向的原始源文件。
Sourcepub fn parent(&self) -> Option<Span>
🔬这是一个仅限 nightly 的实验性 API。(proc_macro_span
#54725)
pub fn parent(&self) -> Option<Span>
proc_macro_span
#54725)从中生成 self
的先前宏展开中的 token 的 Span
,如果有的话。
Sourcepub fn source(&self) -> Span
🔬这是一个仅限 nightly 的实验性 API。(proc_macro_span
#54725)
pub fn source(&self) -> Span
proc_macro_span
#54725)从中生成 self
的原始源代码的 span。如果此 Span
不是从其他宏展开生成的,则返回值与 *self
相同。
Sourcepub fn byte_range(&self) -> Range<usize>
🔬这是一个仅限 nightly 的实验性 API。(proc_macro_span
#54725)
pub fn byte_range(&self) -> Range<usize>
proc_macro_span
#54725)返回 span 在源文件中的字节位置范围。
Sourcepub fn start(&self) -> Span
🔬这是一个仅限 nightly 的实验性 API。(proc_macro_span
#54725)
pub fn start(&self) -> Span
proc_macro_span
#54725)创建一个空 span,指向此 span 正前方。
Sourcepub fn end(&self) -> Span
🔬这是一个仅限 nightly 的实验性 API。(proc_macro_span
#54725)
pub fn end(&self) -> Span
proc_macro_span
#54725)创建一个空 span,指向此 span 正后方。
Sourcepub fn line(&self) -> usize
🔬这是一个仅限 nightly 的实验性 API。(proc_macro_span
#54725)
pub fn line(&self) -> usize
proc_macro_span
#54725)span 开始位置的源文件中的一行,从 1 开始计数。
要获取 span 结束位置的行号,请使用 span.end().line()
。
Sourcepub fn column(&self) -> usize
🔬这是一个仅限 nightly 的实验性 API。(proc_macro_span
#54725)
pub fn column(&self) -> usize
proc_macro_span
#54725)span 开始位置的源文件中的一列,从 1 开始计数。
要获取 span 结束位置的列号,请使用 span.end().column()
。
Sourcepub fn join(&self, other: Span) -> Option<Span>
🔬这是一个仅限 nightly 的实验性 API。(proc_macro_span
#54725)
pub fn join(&self, other: Span) -> Option<Span>
proc_macro_span
#54725)创建一个新的 span,包含 self
和 other
。
如果 self
和 other
来自不同的文件,则返回 None
。
1.45.0 · Sourcepub fn resolved_at(&self, other: Span) -> Span
pub fn resolved_at(&self, other: Span) -> Span
创建一个新的 span,其行/列信息与 self
相同,但在解析符号时,就好像它位于 other
。
1.45.0 · Sourcepub fn located_at(&self, other: Span) -> Span
pub fn located_at(&self, other: Span) -> Span
创建一个新的 span,其名称解析行为与 self
相同,但具有 other
的行/列信息。
Sourcepub fn eq(&self, other: &Span) -> bool
🔬这是一个仅限 nightly 的实验性 API。(proc_macro_span
#54725)
pub fn eq(&self, other: &Span) -> bool
proc_macro_span
#54725)比较两个 span 以查看它们是否相等。
1.66.0 · Sourcepub fn source_text(&self) -> Option<String>
pub fn source_text(&self) -> Option<String>
返回 span 背后的源代码文本。这保留了原始源代码,包括空格和注释。仅当 span 对应于真实源代码时,它才会返回结果。
注意:宏的 observable 结果应该只依赖于 token,而不是这个源代码文本。此函数的结果是尽力而为,仅用于诊断。
Sourcepub fn error<T: Into<String>>(self, message: T) -> Diagnostic
🔬这是一个仅限 nightly 的实验性 API。(proc_macro_diagnostic
#54140)
pub fn error<T: Into<String>>(self, message: T) -> Diagnostic
proc_macro_diagnostic
#54140)在 span self
处使用给定的 message
创建一个新的 Diagnostic
。
Sourcepub fn warning<T: Into<String>>(self, message: T) -> Diagnostic
🔬这是一个仅限 nightly 的实验性 API。(proc_macro_diagnostic
#54140)
pub fn warning<T: Into<String>>(self, message: T) -> Diagnostic
proc_macro_diagnostic
#54140)在 span self
处使用给定的 message
创建一个新的 Diagnostic
。