结构体 Literal

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

字符串字面量 ("hello"), 字节串字面量 (b"hello"), C 字符串字面量 (c"hello"), 字符字面量 ('a'), 字节字符字面量 (b'a'), 带或不带后缀的整数或浮点数 (1, 1u8, 2.3, 2.3f32)。布尔字面量如 truefalse 不属于此类,它们是 Ident

实现§

§

impl Literal

1.29.0 ·

pub fn u8_suffixed(n: u8) -> Literal

创建一个带指定值的新的带后缀整数字面量。

此函数将创建一个类似 1u32 的整数,其中指定的整数值是 token 的第一部分,并且整数部分也在末尾带有后缀。从负数创建的字面量在通过 TokenStream 或字符串往返时可能无法保持原样,并可能被分解为两个 token(- 和正数字面量)。

通过此方法创建的字面量默认具有 Span::call_site() span,可以使用下面的 set_span 方法进行配置。

1.29.0 ·

pub fn u16_suffixed(n: u16) -> Literal

创建一个带指定值的新的带后缀整数字面量。

此函数将创建一个类似 1u32 的整数,其中指定的整数值是 token 的第一部分,并且整数部分也在末尾带有后缀。从负数创建的字面量在通过 TokenStream 或字符串往返时可能无法保持原样,并可能被分解为两个 token(- 和正数字面量)。

通过此方法创建的字面量默认具有 Span::call_site() span,可以使用下面的 set_span 方法进行配置。

1.29.0 ·

pub fn u32_suffixed(n: u32) -> Literal

创建一个带指定值的新的带后缀整数字面量。

此函数将创建一个类似 1u32 的整数,其中指定的整数值是 token 的第一部分,并且整数部分也在末尾带有后缀。从负数创建的字面量在通过 TokenStream 或字符串往返时可能无法保持原样,并可能被分解为两个 token(- 和正数字面量)。

通过此方法创建的字面量默认具有 Span::call_site() span,可以使用下面的 set_span 方法进行配置。

1.29.0 ·

pub fn u64_suffixed(n: u64) -> Literal

创建一个带指定值的新的带后缀整数字面量。

此函数将创建一个类似 1u32 的整数,其中指定的整数值是 token 的第一部分,并且整数部分也在末尾带有后缀。从负数创建的字面量在通过 TokenStream 或字符串往返时可能无法保持原样,并可能被分解为两个 token(- 和正数字面量)。

通过此方法创建的字面量默认具有 Span::call_site() span,可以使用下面的 set_span 方法进行配置。

1.29.0 ·

pub fn u128_suffixed(n: u128) -> Literal

创建一个带指定值的新的带后缀整数字面量。

此函数将创建一个类似 1u32 的整数,其中指定的整数值是 token 的第一部分,并且整数部分也在末尾带有后缀。从负数创建的字面量在通过 TokenStream 或字符串往返时可能无法保持原样,并可能被分解为两个 token(- 和正数字面量)。

通过此方法创建的字面量默认具有 Span::call_site() span,可以使用下面的 set_span 方法进行配置。

1.29.0 ·

pub fn usize_suffixed(n: usize) -> Literal

创建一个带指定值的新的带后缀整数字面量。

此函数将创建一个类似 1u32 的整数,其中指定的整数值是 token 的第一部分,并且整数部分也在末尾带有后缀。从负数创建的字面量在通过 TokenStream 或字符串往返时可能无法保持原样,并可能被分解为两个 token(- 和正数字面量)。

通过此方法创建的字面量默认具有 Span::call_site() span,可以使用下面的 set_span 方法进行配置。

1.29.0 ·

pub fn i8_suffixed(n: i8) -> Literal

创建一个带指定值的新的带后缀整数字面量。

此函数将创建一个类似 1u32 的整数,其中指定的整数值是 token 的第一部分,并且整数部分也在末尾带有后缀。从负数创建的字面量在通过 TokenStream 或字符串往返时可能无法保持原样,并可能被分解为两个 token(- 和正数字面量)。

通过此方法创建的字面量默认具有 Span::call_site() span,可以使用下面的 set_span 方法进行配置。

1.29.0 ·

pub fn i16_suffixed(n: i16) -> Literal

创建一个带指定值的新的带后缀整数字面量。

此函数将创建一个类似 1u32 的整数,其中指定的整数值是 token 的第一部分,并且整数部分也在末尾带有后缀。从负数创建的字面量在通过 TokenStream 或字符串往返时可能无法保持原样,并可能被分解为两个 token(- 和正数字面量)。

通过此方法创建的字面量默认具有 Span::call_site() span,可以使用下面的 set_span 方法进行配置。

1.29.0 ·

pub fn i32_suffixed(n: i32) -> Literal

创建一个带指定值的新的带后缀整数字面量。

此函数将创建一个类似 1u32 的整数,其中指定的整数值是 token 的第一部分,并且整数部分也在末尾带有后缀。从负数创建的字面量在通过 TokenStream 或字符串往返时可能无法保持原样,并可能被分解为两个 token(- 和正数字面量)。

通过此方法创建的字面量默认具有 Span::call_site() span,可以使用下面的 set_span 方法进行配置。

1.29.0 ·

pub fn i64_suffixed(n: i64) -> Literal

创建一个带指定值的新的带后缀整数字面量。

此函数将创建一个类似 1u32 的整数,其中指定的整数值是 token 的第一部分,并且整数部分也在末尾带有后缀。从负数创建的字面量在通过 TokenStream 或字符串往返时可能无法保持原样,并可能被分解为两个 token(- 和正数字面量)。

通过此方法创建的字面量默认具有 Span::call_site() span,可以使用下面的 set_span 方法进行配置。

1.29.0 ·

pub fn i128_suffixed(n: i128) -> Literal

创建一个带指定值的新的带后缀整数字面量。

此函数将创建一个类似 1u32 的整数,其中指定的整数值是 token 的第一部分,并且整数部分也在末尾带有后缀。从负数创建的字面量在通过 TokenStream 或字符串往返时可能无法保持原样,并可能被分解为两个 token(- 和正数字面量)。

通过此方法创建的字面量默认具有 Span::call_site() span,可以使用下面的 set_span 方法进行配置。

1.29.0 ·

pub fn isize_suffixed(n: isize) -> Literal

创建一个带指定值的新的带后缀整数字面量。

此函数将创建一个类似 1u32 的整数,其中指定的整数值是 token 的第一部分,并且整数部分也在末尾带有后缀。从负数创建的字面量在通过 TokenStream 或字符串往返时可能无法保持原样,并可能被分解为两个 token(- 和正数字面量)。

通过此方法创建的字面量默认具有 Span::call_site() span,可以使用下面的 set_span 方法进行配置。

1.29.0 ·

pub fn u8_unsuffixed(n: u8) -> Literal

创建一个带指定值的新的无后缀整数字面量。

此函数将创建一个类似 1 的整数,其中指定的整数值是 token 的第一部分。此 token 没有指定后缀,这意味着诸如 Literal::i8_unsuffixed(1) 这样的调用等同于 Literal::u32_unsuffixed(1)。从负数创建的字面量在通过 TokenStream 或字符串往返时可能无法保持原样,并可能被分解为两个 token(- 和正数字面量)。

通过此方法创建的字面量默认具有 Span::call_site() span,可以使用下面的 set_span 方法进行配置。

1.29.0 ·

pub fn u16_unsuffixed(n: u16) -> Literal

创建一个带指定值的新的无后缀整数字面量。

此函数将创建一个类似 1 的整数,其中指定的整数值是 token 的第一部分。此 token 没有指定后缀,这意味着诸如 Literal::i8_unsuffixed(1) 这样的调用等同于 Literal::u32_unsuffixed(1)。从负数创建的字面量在通过 TokenStream 或字符串往返时可能无法保持原样,并可能被分解为两个 token(- 和正数字面量)。

通过此方法创建的字面量默认具有 Span::call_site() span,可以使用下面的 set_span 方法进行配置。

1.29.0 ·

pub fn u32_unsuffixed(n: u32) -> Literal

创建一个带指定值的新的无后缀整数字面量。

此函数将创建一个类似 1 的整数,其中指定的整数值是 token 的第一部分。此 token 没有指定后缀,这意味着诸如 Literal::i8_unsuffixed(1) 这样的调用等同于 Literal::u32_unsuffixed(1)。从负数创建的字面量在通过 TokenStream 或字符串往返时可能无法保持原样,并可能被分解为两个 token(- 和正数字面量)。

通过此方法创建的字面量默认具有 Span::call_site() span,可以使用下面的 set_span 方法进行配置。

1.29.0 ·

pub fn u64_unsuffixed(n: u64) -> Literal

创建一个带指定值的新的无后缀整数字面量。

此函数将创建一个类似 1 的整数,其中指定的整数值是 token 的第一部分。此 token 没有指定后缀,这意味着诸如 Literal::i8_unsuffixed(1) 这样的调用等同于 Literal::u32_unsuffixed(1)。从负数创建的字面量在通过 TokenStream 或字符串往返时可能无法保持原样,并可能被分解为两个 token(- 和正数字面量)。

通过此方法创建的字面量默认具有 Span::call_site() span,可以使用下面的 set_span 方法进行配置。

1.29.0 ·

pub fn u128_unsuffixed(n: u128) -> Literal

创建一个带指定值的新的无后缀整数字面量。

此函数将创建一个类似 1 的整数,其中指定的整数值是 token 的第一部分。此 token 没有指定后缀,这意味着诸如 Literal::i8_unsuffixed(1) 这样的调用等同于 Literal::u32_unsuffixed(1)。从负数创建的字面量在通过 TokenStream 或字符串往返时可能无法保持原样,并可能被分解为两个 token(- 和正数字面量)。

通过此方法创建的字面量默认具有 Span::call_site() span,可以使用下面的 set_span 方法进行配置。

1.29.0 ·

pub fn usize_unsuffixed(n: usize) -> Literal

创建一个带指定值的新的无后缀整数字面量。

此函数将创建一个类似 1 的整数,其中指定的整数值是 token 的第一部分。此 token 没有指定后缀,这意味着诸如 Literal::i8_unsuffixed(1) 这样的调用等同于 Literal::u32_unsuffixed(1)。从负数创建的字面量在通过 TokenStream 或字符串往返时可能无法保持原样,并可能被分解为两个 token(- 和正数字面量)。

通过此方法创建的字面量默认具有 Span::call_site() span,可以使用下面的 set_span 方法进行配置。

1.29.0 ·

pub fn i8_unsuffixed(n: i8) -> Literal

创建一个带指定值的新的无后缀整数字面量。

此函数将创建一个类似 1 的整数,其中指定的整数值是 token 的第一部分。此 token 没有指定后缀,这意味着诸如 Literal::i8_unsuffixed(1) 这样的调用等同于 Literal::u32_unsuffixed(1)。从负数创建的字面量在通过 TokenStream 或字符串往返时可能无法保持原样,并可能被分解为两个 token(- 和正数字面量)。

通过此方法创建的字面量默认具有 Span::call_site() span,可以使用下面的 set_span 方法进行配置。

1.29.0 ·

pub fn i16_unsuffixed(n: i16) -> Literal

创建一个带指定值的新的无后缀整数字面量。

此函数将创建一个类似 1 的整数,其中指定的整数值是 token 的第一部分。此 token 没有指定后缀,这意味着诸如 Literal::i8_unsuffixed(1) 这样的调用等同于 Literal::u32_unsuffixed(1)。从负数创建的字面量在通过 TokenStream 或字符串往返时可能无法保持原样,并可能被分解为两个 token(- 和正数字面量)。

通过此方法创建的字面量默认具有 Span::call_site() span,可以使用下面的 set_span 方法进行配置。

1.29.0 ·

pub fn i32_unsuffixed(n: i32) -> Literal

创建一个带指定值的新的无后缀整数字面量。

此函数将创建一个类似 1 的整数,其中指定的整数值是 token 的第一部分。此 token 没有指定后缀,这意味着诸如 Literal::i8_unsuffixed(1) 这样的调用等同于 Literal::u32_unsuffixed(1)。从负数创建的字面量在通过 TokenStream 或字符串往返时可能无法保持原样,并可能被分解为两个 token(- 和正数字面量)。

通过此方法创建的字面量默认具有 Span::call_site() span,可以使用下面的 set_span 方法进行配置。

1.29.0 ·

pub fn i64_unsuffixed(n: i64) -> Literal

创建一个带指定值的新的无后缀整数字面量。

此函数将创建一个类似 1 的整数,其中指定的整数值是 token 的第一部分。此 token 没有指定后缀,这意味着诸如 Literal::i8_unsuffixed(1) 这样的调用等同于 Literal::u32_unsuffixed(1)。从负数创建的字面量在通过 TokenStream 或字符串往返时可能无法保持原样,并可能被分解为两个 token(- 和正数字面量)。

通过此方法创建的字面量默认具有 Span::call_site() span,可以使用下面的 set_span 方法进行配置。

1.29.0 ·

pub fn i128_unsuffixed(n: i128) -> Literal

创建一个带指定值的新的无后缀整数字面量。

此函数将创建一个类似 1 的整数,其中指定的整数值是 token 的第一部分。此 token 没有指定后缀,这意味着诸如 Literal::i8_unsuffixed(1) 这样的调用等同于 Literal::u32_unsuffixed(1)。从负数创建的字面量在通过 TokenStream 或字符串往返时可能无法保持原样,并可能被分解为两个 token(- 和正数字面量)。

通过此方法创建的字面量默认具有 Span::call_site() span,可以使用下面的 set_span 方法进行配置。

1.29.0 ·

pub fn isize_unsuffixed(n: isize) -> Literal

创建一个带指定值的新的无后缀整数字面量。

此函数将创建一个类似 1 的整数,其中指定的整数值是 token 的第一部分。此 token 没有指定后缀,这意味着诸如 Literal::i8_unsuffixed(1) 这样的调用等同于 Literal::u32_unsuffixed(1)。从负数创建的字面量在通过 TokenStream 或字符串往返时可能无法保持原样,并可能被分解为两个 token(- 和正数字面量)。

通过此方法创建的字面量默认具有 Span::call_site() span,可以使用下面的 set_span 方法进行配置。

1.29.0 ·

pub fn f32_unsuffixed(n: f32) -> Literal

创建一个新的无后缀浮点数字面量。

此构造函数类似于 `Literal::i8_unsuffixed` 等函数,将浮点数值直接输出到 token 中,但不使用后缀,因此在编译器中稍后可能被推断为 f64。从负数创建的字面量在通过 TokenStream 或字符串往返时可能无法保持原样,并可能被分解为两个 token(- 和正数字面量)。

§可能 panic

此函数要求指定的浮点数为有限值,例如,如果它是无穷大或 NaN,此函数将 panic。

1.29.0 ·

pub fn f32_suffixed(n: f32) -> Literal

创建一个新的带后缀浮点数字面量。

此构造函数将创建一个类似 1.0f32 的字面量,其中指定的值是 token 的前一部分,f32 是 token 的后缀。此 token 在编译器中总是会被推断为 f32。从负数创建的字面量在通过 TokenStream 或字符串往返时可能无法保持原样,并可能被分解为两个 token(- 和正数字面量)。

§可能 panic

此函数要求指定的浮点数为有限值,例如,如果它是无穷大或 NaN,此函数将 panic。

1.29.0 ·

pub fn f64_unsuffixed(n: f64) -> Literal

创建一个新的无后缀浮点数字面量。

此构造函数类似于 `Literal::i8_unsuffixed` 等函数,将浮点数值直接输出到 token 中,但不使用后缀,因此在编译器中稍后可能被推断为 f64。从负数创建的字面量在通过 TokenStream 或字符串往返时可能无法保持原样,并可能被分解为两个 token(- 和正数字面量)。

§可能 panic

此函数要求指定的浮点数为有限值,例如,如果它是无穷大或 NaN,此函数将 panic。

1.29.0 ·

pub fn f64_suffixed(n: f64) -> Literal

创建一个新的带后缀浮点数字面量。

此构造函数将创建一个类似 1.0f64 的字面量,其中指定的值是 token 的前一部分,f64 是 token 的后缀。此 token 在编译器中总是会被推断为 f64。从负数创建的字面量在通过 TokenStream 或字符串往返时可能无法保持原样,并可能被分解为两个 token(- 和正数字面量)。

§可能 panic

此函数要求指定的浮点数为有限值,例如,如果它是无穷大或 NaN,此函数将 panic。

1.29.0 ·

pub fn string(string: &str) -> Literal

字符串字面量。

1.29.0 ·

pub fn character(ch: char) -> Literal

字符字面量。

1.79.0 ·

pub fn byte_character(byte: u8) -> Literal

字节字符字面量。

1.29.0 ·

pub fn byte_string(bytes: &[u8]) -> Literal

字节串字面量。

1.79.0 ·

pub fn c_string(string: &CStr) -> Literal

C 字符串字面量。

1.29.0 ·

pub fn span(&self) -> Span

返回包含此字面量的 span。

1.29.0 ·

pub fn set_span(&mut self, span: Span)

配置与此字面量关联的 span。

pub fn subspan<R: RangeBounds<usize>>(&self, range: R) -> Option<Span>

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

返回一个 Span,它是 self.span() 的子集,仅包含 range 范围内的源字节。如果修剪后的 span 超出 self 的边界,则返回 None

Trait 实现§

1.29.0 · §

impl Clone for Literal

§

fn clone(&self) -> Literal

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

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

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

impl Debug for Literal

§

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

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

impl Display for Literal

将字面量打印为字符串,该字符串应能无损地转换回相同的字面量(浮点数字面量可能存在舍入差异)。

§

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

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

impl From<Literal> for TokenTree

§

fn from(g: Literal) -> TokenTree

从输入类型转换为此类型。
1.54.0 · §

impl FromStr for Literal

从其字符串表示中解析单个字面量。

为了成功解析,输入字符串除了字面量 token 之外不能包含任何其他内容。具体来说,除了字面量之外,它不能包含空白或注释。

生成的字面量 token 将具有 Span::call_site() span。

注意:某些错误可能会导致 panic 而不是返回 LexError。我们保留稍后将这些错误更改为 LexError 的权利。

§

type Err = LexError

解析时可能返回的关联错误类型。
§

fn from_str(src: &str) -> Result<Self, LexError>

解析字符串 s 以返回此类型的值。 阅读更多
§

impl ToTokens for Literal

§

fn to_tokens(&self, tokens: &mut TokenStream)

🔬这是一个仅限 nightly 版本使用的实验性 API。(proc_macro_totokens #130977)
self 写入给定的 TokenStream阅读更多
§

fn to_token_stream(&self) -> TokenStream

🔬这是一个仅限 nightly 版本使用的实验性 API。(proc_macro_totokens #130977)
self 直接转换为 TokenStream 对象。 阅读更多
§

fn into_token_stream(self) -> TokenStream
where Self: Sized,

🔬这是一个仅限 nightly 版本使用的实验性 API。(proc_macro_totokens #130977)
self 直接转换为 TokenStream 对象。 阅读更多

自动 Trait 实现§

泛型实现§

§

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)
self 复制赋值给 dest阅读更多
§

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> ToString for T
where T: Display + ?Sized,

§

fn to_string(&self) -> String

将给定值转换为 String阅读更多
§

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>

执行转换。