Struct Span

1.29.0 · 源码
pub struct Span(/* private fields */);
展开描述

源代码的一个区域,以及宏展开信息。

实现§

源码§

impl Span

源码

pub fn def_site() -> Span

🔬这是一个仅限 Nightly 版本的实验性 API。(proc_macro_def_site #54724)

在宏定义处解析的 Span。

1.29.0 · 源码

pub fn call_site() -> Span

当前过程宏调用的 Span。使用此 Span 创建的标识符将像直接写在宏调用位置一样解析(调用站点卫生),宏调用处的其他代码也能引用它们。

1.45.0 · 源码

pub fn mixed_site() -> Span

表示 macro_rules 卫生的 Span,有时在宏定义站点解析(局部变量、标签、$crate),有时在宏调用站点解析(其他所有情况)。Span 位置取自调用站点。

源码

pub fn source_file(&self) -> SourceFile

🔬这是一个仅限 Nightly 版本的实验性 API。(proc_macro_span #54725)

此 Span 指向的原始源文件。

源码

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

🔬这是一个仅限 Nightly 版本的实验性 API。(proc_macro_span #54725)

如果 self 是从先前的宏展开中的 token 生成的,则返回该 token 的 Span

源码

pub fn source(&self) -> Span

🔬这是一个仅限 Nightly 版本的实验性 API。(proc_macro_span #54725)

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

源码

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

🔬这是一个仅限 Nightly 版本的实验性 API。(proc_macro_span #54725)

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

源码

pub fn start(&self) -> Span

🔬这是一个仅限 Nightly 版本的实验性 API。(proc_macro_span #54725)

创建一个指向此 Span 正前方的空 Span。

源码

pub fn end(&self) -> Span

🔬这是一个仅限 Nightly 版本的实验性 API。(proc_macro_span #54725)

创建一个指向此 Span 正后方的空 Span。

源码

pub fn line(&self) -> usize

🔬这是一个仅限 Nightly 版本的实验性 API。(proc_macro_span #54725)

Span 在源文件中开始处的一索引行号。

要获取 Span 结束处的行号,请使用 span.end().line()

源码

pub fn column(&self) -> usize

🔬这是一个仅限 Nightly 版本的实验性 API。(proc_macro_span #54725)

Span 在源文件中开始处的一索引列号。

要获取 Span 结束处的列号,请使用 span.end().column()

源码

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

🔬这是一个仅限 Nightly 版本的实验性 API。(proc_macro_span #54725)

创建一个包含 selfother 的新 Span。

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

1.45.0 · 源码

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

创建一个新的 Span,其行/列信息与 self 相同,但符号解析行为如同在 other 处一样。

1.45.0 · 源码

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

创建一个新的 Span,其名称解析行为与 self 相同,但行/列信息取自 other

源码

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

🔬这是一个仅限 Nightly 版本的实验性 API。(proc_macro_span #54725)

比较两个 Span 是否相等。

1.66.0 · 源码

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)

使用给定 message 在 Span self 处创建一个新的 Diagnostic

源码

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

🔬这是一个仅限 Nightly 版本的实验性 API。(proc_macro_diagnostic #54140)

使用给定 message 在 Span self 处创建一个新的 Diagnostic

源码

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

🔬这是一个仅限 Nightly 版本的实验性 API。(proc_macro_diagnostic #54140)

使用给定 message 在 Span self 处创建一个新的 Diagnostic

源码

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

🔬这是一个仅限 Nightly 版本的实验性 API。(proc_macro_diagnostic #54140)

使用给定 message 在 Span self 处创建一个新的 Diagnostic

Trait 实现§

1.29.0 · 源码§

impl Clone for Span

源码§

fn clone(&self) -> Span

返回值的副本。阅读更多
1.0.0 · 源码§

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

source 执行复制赋值。阅读更多
1.29.0 · 源码§

impl Debug for Span

以方便调试的形式打印 Span。

源码§

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

使用给定的格式化器格式化值。阅读更多
源码§

impl MultiSpan for Span

源码§

fn into_spans(self) -> Vec<Span>

🔬这是一个仅限 Nightly 版本的实验性 API。(proc_macro_diagnostic #54140)
self 转换为 Vec<Span>
1.29.0 · 源码§

impl Copy for Span

1.29.0 · 源码§

impl !Send for Span

1.29.0 · 源码§

impl !Sync for Span

自动 Trait 实现§

§

impl Freeze for Span

§

impl RefUnwindSafe for Span

§

impl Unpin for Span

§

impl UnwindSafe for Span

通用实现§

源码§

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

源码§

fn type_id(&self) -> TypeId

获取 selfTypeId阅读更多
源码§

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

源码§

fn borrow(&self) -> &T

从拥有值中进行不可变借用。阅读更多
源码§

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

源码§

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

从拥有值中进行可变借用。阅读更多
源码§

impl<T> CloneToUninit for T
where T: Clone,

源码§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬这是一个仅限 Nightly 版本的实验性 API。(clone_to_uninit #126799)
selfdest 执行复制赋值。阅读更多
源码§

impl<T> From<T> for T

源码§

fn from(t: T) -> T

返回未改变的参数。

源码§

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

源码§

fn into(self) -> U

调用 U::from(self)

也就是说,此转换取决于 From<T> for U 的实现所选择的操作。

源码§

impl<T> ToOwned for T
where T: Clone,

源码§

type Owned = T

获取所有权后得到的类型。
源码§

fn to_owned(&self) -> T

从借用数据创建拥有数据,通常通过克隆。阅读更多
源码§

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

使用借用数据替换拥有数据,通常通过克隆。阅读更多
源码§

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

源码§

type Error = Infallible

转换出错时返回的类型。
源码§

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

执行转换。
源码§

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

源码§

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

转换出错时返回的类型。
源码§

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

执行转换。