pub struct Span(/* private fields */);展开描述
源代码的一个区域,以及宏展开信息。
实现§
源码§impl Span
impl Span
1.29.0 · 源码pub fn call_site() -> Span
pub fn call_site() -> Span
当前过程宏调用的 Span。使用此 Span 创建的标识符将像直接写在宏调用位置一样解析(调用站点卫生),宏调用处的其他代码也能引用它们。
1.45.0 · 源码pub fn mixed_site() -> Span
pub fn mixed_site() -> Span
表示 macro_rules 卫生的 Span,有时在宏定义站点解析(局部变量、标签、$crate),有时在宏调用站点解析(其他所有情况)。Span 位置取自调用站点。
源码pub fn source_file(&self) -> SourceFile
🔬这是一个仅限 Nightly 版本的实验性 API。(proc_macro_span #54725)
pub fn source_file(&self) -> SourceFile
proc_macro_span #54725)此 Span 指向的原始源文件。
源码pub fn parent(&self) -> Option<Span>
🔬这是一个仅限 Nightly 版本的实验性 API。(proc_macro_span #54725)
pub fn parent(&self) -> Option<Span>
proc_macro_span #54725)如果 self 是从先前的宏展开中的 token 生成的,则返回该 token 的 Span。
源码pub fn source(&self) -> Span
🔬这是一个仅限 Nightly 版本的实验性 API。(proc_macro_span #54725)
pub fn source(&self) -> Span
proc_macro_span #54725)生成 self 的原始源代码的 Span。如果此 Span 不是由其他宏展开生成的,则返回值与 *self 相同。
源码pub fn byte_range(&self) -> Range<usize>
🔬这是一个仅限 Nightly 版本的实验性 API。(proc_macro_span #54725)
pub fn byte_range(&self) -> Range<usize>
proc_macro_span #54725)返回 Span 在源文件中的字节位置范围。
源码pub fn start(&self) -> Span
🔬这是一个仅限 Nightly 版本的实验性 API。(proc_macro_span #54725)
pub fn start(&self) -> Span
proc_macro_span #54725)创建一个指向此 Span 正前方的空 Span。
源码pub fn end(&self) -> Span
🔬这是一个仅限 Nightly 版本的实验性 API。(proc_macro_span #54725)
pub fn end(&self) -> Span
proc_macro_span #54725)创建一个指向此 Span 正后方的空 Span。
源码pub fn line(&self) -> usize
🔬这是一个仅限 Nightly 版本的实验性 API。(proc_macro_span #54725)
pub fn line(&self) -> usize
proc_macro_span #54725)Span 在源文件中开始处的一索引行号。
要获取 Span 结束处的行号,请使用 span.end().line()。
源码pub fn column(&self) -> usize
🔬这是一个仅限 Nightly 版本的实验性 API。(proc_macro_span #54725)
pub fn column(&self) -> usize
proc_macro_span #54725)Span 在源文件中开始处的一索引列号。
要获取 Span 结束处的列号,请使用 span.end().column()。
源码pub 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)创建一个包含 self 和 other 的新 Span。
如果 self 和 other 来自不同的文件,则返回 None。
1.45.0 · 源码pub fn resolved_at(&self, other: Span) -> Span
pub fn resolved_at(&self, other: Span) -> Span
创建一个新的 Span,其行/列信息与 self 相同,但符号解析行为如同在 other 处一样。
1.45.0 · 源码pub fn located_at(&self, other: Span) -> Span
pub fn located_at(&self, other: Span) -> Span
创建一个新的 Span,其名称解析行为与 self 相同,但行/列信息取自 other。
源码pub 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 · 源码pub fn source_text(&self) -> Option<String>
pub fn source_text(&self) -> Option<String>
返回 Span 后面的源代码文本。这会保留原始源代码,包括空格和注释。仅当 Span 对应实际源代码时才返回结果。
注意:宏的可观察结果应仅依赖于 token,而非此源代码文本。此函数的结果是尽力而为的,仅用于诊断目的。
源码pub 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)使用给定 message 在 Span self 处创建一个新的 Diagnostic。
源码pub 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)使用给定 message 在 Span self 处创建一个新的 Diagnostic。