pub struct Span(/* private fields */);
展开描述
源代码的区域,以及宏展开信息。
实现§
源代码§impl Span
impl Span
源代码pub 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 · 源代码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
从中生成的先前宏展开中的令牌的 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 开始处的源文件的以 1 为索引的行。
要获取 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 开始处的源文件的以 1 为索引的列。
要获取 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
创建一个与 self
具有相同行/列信息的新 span,但解析符号时就像它在 other
一样。
1.45.0 · 源代码pub fn located_at(&self, other: Span) -> Span
pub fn located_at(&self, other: Span) -> Span
创建一个与 self
具有相同名称解析行为的新 span,但具有 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 对应于实际源代码时,它才返回结果。
注意:宏的 observable 结果应该只依赖于令牌,而不依赖于此源代码文本。此函数的结果是一个最佳努力,仅用于诊断。
源代码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)在 span self
处使用给定 message
创建新的 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)在 span self
处使用给定 message
创建新的 Diagnostic
。
Trait 实现§
impl Copy for Span
impl !Send for Span
impl !Sync for Span
自动 Trait 实现§
为 Span 实现 Freeze trait。
为 Span 实现 RefUnwindSafe trait。
为 Span 实现 Unpin trait。
为 Span 实现 UnwindSafe trait。
通用的实现§
源码§为所有类型 T
实现 BorrowMut<T> trait。其中 T
需要满足 ?Sized
的约束。
为所有类型 T
实现 BorrowMut<T> trait。其中 T
需要满足 ?Sized
的约束。
T
需要满足 ?Sized
的约束。源码§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
源码§为所有实现了 Clone trait 的类型 T
实现 CloneToUninit trait。其中 T
需要满足 Clone 的约束。
为所有实现了 Clone trait 的类型 T
实现 CloneToUninit trait。其中 T
需要满足 Clone 的约束。
T
需要满足 Clone 的约束。