proc_macro

Trait ToTokens

源代码
pub trait ToTokens {
    // Required method
    fn to_tokens(&self, tokens: &mut TokenStream);

    // Provided methods
    fn to_token_stream(&self) -> TokenStream { ... }
    fn into_token_stream(self) -> TokenStream
       where Self: Sized { ... }
}
🔬这是一个仅限 nightly 版本的实验性 API。(proc_macro_totokens #130977
展开描述

可以插入到 quote! 调用中的类型。

必需方法§

源代码

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

🔬这是一个仅限 nightly 版本的实验性 API。(proc_macro_totokens #130977

self 写入给定的 TokenStream

§示例

表示 Rust 路径(例如 std::cmp::PartialEq)的 struct 的示例实现

#![feature(proc_macro_totokens)]

use std::iter;
use proc_macro::{Spacing, Punct, TokenStream, TokenTree, ToTokens};

pub struct Path {
    pub global: bool,
    pub segments: Vec<PathSegment>,
}

impl ToTokens for Path {
    fn to_tokens(&self, tokens: &mut TokenStream) {
        for (i, segment) in self.segments.iter().enumerate() {
            if i > 0 || self.global {
                // Double colon `::`
                tokens.extend(iter::once(TokenTree::from(Punct::new(':', Spacing::Joint))));
                tokens.extend(iter::once(TokenTree::from(Punct::new(':', Spacing::Alone))));
            }
            segment.to_tokens(tokens);
        }
    }
}

提供的方法§

源代码

fn to_token_stream(&self) -> TokenStream

🔬这是一个仅限 nightly 版本的实验性 API。(proc_macro_totokens #130977

self 直接转换为 TokenStream 对象。

此方法使用 to_tokens 隐式实现,并作为 ToTokens trait 使用者的便捷方法。

源代码

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

🔬这是一个仅限 nightly 版本的实验性 API。(proc_macro_totokens #130977

self 直接转换为 TokenStream 对象。

此方法使用 to_tokens 隐式实现,并作为 ToTokens trait 使用者的便捷方法。

外部类型上的实现§

源代码§

impl ToTokens for bool

源代码§

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

🔬这是一个仅限 nightly 版本的实验性 API。(proc_macro_totokens #130977
源代码§

impl ToTokens for char

源代码§

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

🔬这是一个仅限 nightly 版本的实验性 API。(proc_macro_totokens #130977
源代码§

impl ToTokens for f32

源代码§

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

🔬这是一个仅限 nightly 版本的实验性 API。(proc_macro_totokens #130977
源代码§

impl ToTokens for f64

源代码§

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

🔬这是一个仅限 nightly 版本的实验性 API。(proc_macro_totokens #130977
源代码§

impl ToTokens for i8

源代码§

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

🔬这是一个仅限 nightly 版本的实验性 API。(proc_macro_totokens #130977
源代码§

impl ToTokens for i16

源代码§

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

🔬这是一个仅限 nightly 版本的实验性 API。(proc_macro_totokens #130977
源代码§

impl ToTokens for i32

源代码§

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

🔬这是一个仅限 nightly 版本的实验性 API。(proc_macro_totokens #130977
源代码§

impl ToTokens for i64

源代码§

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

🔬这是一个仅限 nightly 版本的实验性 API。(proc_macro_totokens #130977
源代码§

impl ToTokens for i128

源代码§

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

🔬这是一个仅限 nightly 版本的实验性 API。(proc_macro_totokens #130977
源代码§

impl ToTokens for isize

源代码§

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

🔬这是一个仅限 nightly 版本的实验性 API。(proc_macro_totokens #130977
源代码§

impl ToTokens for str

源代码§

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

🔬这是一个仅限 nightly 版本的实验性 API。(proc_macro_totokens #130977
源代码§

impl ToTokens for u8

源代码§

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

🔬这是一个仅限 nightly 版本的实验性 API。(proc_macro_totokens #130977
源代码§

impl ToTokens for u16

源代码§

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

🔬这是一个仅限 nightly 版本的实验性 API。(proc_macro_totokens #130977
源代码§

impl ToTokens for u32

源代码§

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

🔬这是一个仅限 nightly 版本的实验性 API。(proc_macro_totokens #130977
源代码§

impl ToTokens for u64

源代码§

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

🔬这是一个仅限 nightly 版本的实验性 API。(proc_macro_totokens #130977
源代码§

impl ToTokens for u128

源代码§

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

🔬这是一个仅限 nightly 版本的实验性 API。(proc_macro_totokens #130977
源代码§

impl ToTokens for usize

源代码§

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

🔬这是一个仅限 nightly 版本的实验性 API。(proc_macro_totokens #130977
源代码§

impl ToTokens for CString

源代码§

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

🔬这是一个仅限 nightly 版本的实验性 API。(proc_macro_totokens #130977
源代码§

impl ToTokens for String

源代码§

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

🔬这是一个仅限 nightly 版本的实验性 API。(proc_macro_totokens #130977
源代码§

impl ToTokens for CStr

源代码§

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

🔬这是一个仅限 nightly 版本的实验性 API。(proc_macro_totokens #130977
源代码§

impl<T: ToTokens + ToOwned + ?Sized> ToTokens for Cow<'_, T>

源代码§

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

🔬这是一个仅限 nightly 版本的实验性 API。(proc_macro_totokens #130977
源代码§

impl<T: ToTokens + ?Sized> ToTokens for &T

源代码§

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

🔬这是一个仅限 nightly 版本的实验性 API。(proc_macro_totokens #130977
源代码§

impl<T: ToTokens + ?Sized> ToTokens for &mut T

源代码§

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

🔬这是一个仅限 nightly 版本的实验性 API。(proc_macro_totokens #130977
源代码§

impl<T: ToTokens + ?Sized> ToTokens for Box<T>

源代码§

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

🔬这是一个仅限 nightly 版本的实验性 API。(proc_macro_totokens #130977
源代码§

impl<T: ToTokens + ?Sized> ToTokens for Rc<T>

源代码§

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

🔬这是一个仅限 nightly 版本的实验性 API。(proc_macro_totokens #130977
源代码§

impl<T: ToTokens> ToTokens for Option<T>

源代码§

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

🔬这是一个仅限 nightly 版本的实验性 API。(proc_macro_totokens #130977

实现者§