proc_macro

结构体 Span

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

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

实现§

Source§

impl Span

Source

pub fn def_site() -> Span

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

一个在宏定义位置解析的 span。

1.29.0 · Source

pub fn call_site() -> Span

当前过程宏调用的 span。使用此 span 创建的标识符将被解析为好像它们直接写在宏调用位置(调用位置卫生),并且宏调用位置的其他代码也将能够引用它们。

1.45.0 · Source

pub fn mixed_site() -> Span

一个表示 macro_rules 卫生的 span,有时在宏定义位置(局部变量、标签、$crate)解析,有时在宏调用位置(其他所有内容)解析。span 位置取自调用位置。

Source

pub fn source_file(&self) -> SourceFile

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

此 span 指向的原始源文件。

Source

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

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

从中生成 self 的先前宏展开中的 token 的 Span,如果有的话。

Source

pub fn source(&self) -> Span

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

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

Source

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

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

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

Source

pub fn start(&self) -> Span

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

创建一个空 span,指向此 span 正前方。

Source

pub fn end(&self) -> Span

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

创建一个空 span,指向此 span 正后方。

Source

pub fn line(&self) -> usize

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

span 开始位置的源文件中的一行,从 1 开始计数。

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

Source

pub fn column(&self) -> usize

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

span 开始位置的源文件中的一列,从 1 开始计数。

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

Source

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

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

创建一个新的 span,包含 selfother

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

1.45.0 · Source

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

创建一个新的 span,其行/列信息与 self 相同,但在解析符号时,就好像它位于 other

1.45.0 · Source

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

创建一个新的 span,其名称解析行为与 self 相同,但具有 other 的行/列信息。

Source

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

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

比较两个 span 以查看它们是否相等。

1.66.0 · Source

pub fn source_text(&self) -> Option<String>

返回 span 背后的源代码文本。这保留了原始源代码,包括空格和注释。仅当 span 对应于真实源代码时,它才会返回结果。

注意:宏的 observable 结果应该只依赖于 token,而不是这个源代码文本。此函数的结果是尽力而为,仅用于诊断。

Source

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

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

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

Source

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

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

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

Source

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

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

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

Source

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

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

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

Trait 实现§

1.29.0 · Source§

impl Clone for Span

Source§

fn clone(&self) -> Span

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

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

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

impl Debug for Span

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

Source§

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

使用给定的 formatter 格式化值。 阅读更多
Source§

impl MultiSpan for Span

Source§

fn into_spans(self) -> Vec<Span>

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

impl Copy for Span

1.29.0 · Source§

impl !Send for Span

1.29.0 · Source§

impl !Sync for Span

自动 Trait 实现§

§

impl Freeze for Span

§

impl RefUnwindSafe for Span

§

impl Unpin for Span

§

impl UnwindSafe for Span

通用实现§

Source§

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

Source§

fn type_id(&self) -> TypeId

获取 selfTypeId阅读更多
Source§

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

Source§

fn borrow(&self) -> &T

不可变地从拥有值借用。 阅读更多
Source§

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

Source§

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

可变地从拥有值借用。 阅读更多
Source§

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

Source§

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

🔬这是一个仅限 nightly 的实验性 API。(clone_to_uninit #126799)
selfdst 执行复制赋值。 阅读更多
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

返回未更改的参数。

Source§

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

Source§

fn into(self) -> U

调用 U::from(self)

也就是说,此转换是 From<T> for U 的实现选择执行的任何操作。

Source§

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

Source§

type Owned = T

获取所有权后的结果类型。
Source§

fn to_owned(&self) -> T

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

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

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

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

Source§

type Error = Infallible

转换错误时返回的类型。
Source§

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

执行转换。
Source§

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

Source§

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

转换错误时返回的类型。
Source§

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

执行转换。