Trait quote::ToTokens

source ·
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 { ... }
}
Expand description

Types that can be interpolated inside a quote! invocation.

Required Methods§

source

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

Write self to the given TokenStream.

The token append methods provided by the TokenStreamExt extension trait may be useful for implementing ToTokens.

§Example

Example implementation for a struct representing Rust paths like std::cmp::PartialEq:

use proc_macro2::{TokenTree, Spacing, Span, Punct, TokenStream};
use quote::{TokenStreamExt, 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.append(Punct::new(':', Spacing::Joint));
                tokens.append(Punct::new(':', Spacing::Alone));
            }
            segment.to_tokens(tokens);
        }
    }
}

Provided Methods§

source

fn to_token_stream(&self) -> TokenStream

Convert self directly into a TokenStream object.

This method is implicitly implemented using to_tokens, and acts as a convenience method for consumers of the ToTokens trait.

source

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

Convert self directly into a TokenStream object.

This method is implicitly implemented using to_tokens, and acts as a convenience method for consumers of the ToTokens trait.

Implementations on Foreign Types§

source§

impl ToTokens for TokenTree

source§

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

source§

impl ToTokens for bool

source§

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

source§

impl ToTokens for char

source§

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

source§

impl ToTokens for f32

source§

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

source§

impl ToTokens for f64

source§

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

source§

impl ToTokens for i8

source§

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

source§

impl ToTokens for i16

source§

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

source§

impl ToTokens for i32

source§

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

source§

impl ToTokens for i64

source§

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

source§

impl ToTokens for i128

source§

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

source§

impl ToTokens for isize

source§

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

source§

impl ToTokens for str

source§

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

source§

impl ToTokens for u8

source§

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

source§

impl ToTokens for u16

source§

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

source§

impl ToTokens for u32

source§

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

source§

impl ToTokens for u64

source§

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

source§

impl ToTokens for u128

source§

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

source§

impl ToTokens for usize

source§

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

source§

impl ToTokens for Group

source§

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

source§

impl ToTokens for Ident

source§

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

source§

impl ToTokens for Literal

source§

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

source§

impl ToTokens for Punct

source§

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

source§

impl ToTokens for TokenStream

source§

impl ToTokens for CString

source§

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

source§

impl ToTokens for String

source§

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

source§

impl ToTokens for CStr

source§

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

source§

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

source§

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

source§

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

source§

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

source§

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

source§

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

source§

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

source§

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

source§

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

source§

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

source§

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

source§

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

Implementors§

impl ToTokens for Async

impl ToTokens for Lit

impl ToTokens for Else

impl ToTokens for Ne

impl ToTokens for While

impl ToTokens for ItemFn

impl ToTokens for Macro

impl<T, P> ToTokens for Pair<T, P>
where T: ToTokens, P: ToTokens,

impl ToTokens for ExprLet

impl ToTokens for Mut

impl ToTokens for Union

impl ToTokens for Const

impl ToTokens for DotDot

impl ToTokens for Percent

impl ToTokens for Star

impl ToTokens for Move

impl ToTokens for ItemMod

impl ToTokens for LArrow

impl ToTokens for As

impl ToTokens for LitInt

impl ToTokens for Auto

impl ToTokens for Default

impl ToTokens for UseGlob

impl ToTokens for Pound

impl ToTokens for SlashEq

impl ToTokens for Let

impl ToTokens for LitStr

impl ToTokens for File

impl ToTokens for Arm

impl ToTokens for Do

impl ToTokens for TypePtr

impl ToTokens for Crate

impl ToTokens for Eq

impl ToTokens for Expr

impl<'a> ToTokens for Turbofish<'a>

impl ToTokens for Break

impl ToTokens for Not

impl ToTokens for Yield

impl ToTokens for Field

impl ToTokens for MinusEq

impl ToTokens for Raw

impl ToTokens for AndAnd

impl ToTokens for Minus

impl ToTokens for If

impl ToTokens for PlusEq

impl ToTokens for Stmt

impl ToTokens for LitCStr

impl ToTokens for Member

impl ToTokens for Abi

impl ToTokens for Shr

impl<'a> ToTokens for TypeGenerics<'a>

impl ToTokens for Index

impl ToTokens for Le

impl ToTokens for Item

impl ToTokens for RArrow

impl ToTokens for Nothing

impl ToTokens for Meta

impl ToTokens for AndEq

impl ToTokens for Lt

impl ToTokens for Dyn

impl<T, P> ToTokens for Punctuated<T, P>
where T: ToTokens, P: ToTokens,

impl ToTokens for Unsafe

impl ToTokens for Macro

impl ToTokens for Box

impl ToTokens for Await

impl ToTokens for LitBool

impl ToTokens for Dollar

impl ToTokens for Typeof

impl ToTokens for Or

impl ToTokens for Become

impl ToTokens for OrOr

impl ToTokens for Gt

impl ToTokens for Fn

impl ToTokens for Final

impl ToTokens for Ge

impl ToTokens for FnArg

impl ToTokens for PatType

impl ToTokens for ShlEq

impl ToTokens for Caret

impl ToTokens for Extern

impl ToTokens for Variant

impl ToTokens for Return

impl ToTokens for Semi

impl ToTokens for CaretEq

impl ToTokens for Pub

impl ToTokens for Type

impl ToTokens for Unsized

impl ToTokens for Mod

impl ToTokens for Slash

impl ToTokens for Dot

impl ToTokens for For

impl ToTokens for ShrEq

impl ToTokens for UnOp

impl ToTokens for Pat

impl ToTokens for Where

impl ToTokens for UseName

impl ToTokens for PatWild

impl ToTokens for Try

impl ToTokens for Label

impl ToTokens for LitByte

impl ToTokens for At

impl ToTokens for ItemUse

impl ToTokens for Use

impl ToTokens for Block

impl ToTokens for Static

impl ToTokens for In

impl ToTokens for EqEq

impl ToTokens for ExprIf

impl ToTokens for Enum

impl ToTokens for PatOr

impl ToTokens for BinOp

impl ToTokens for Struct

impl ToTokens for Virtual

impl ToTokens for LitChar

impl ToTokens for Shl

impl ToTokens for Path

impl ToTokens for Local

impl ToTokens for Loop

impl<'a> ToTokens for ImplGenerics<'a>

impl ToTokens for Super

impl ToTokens for Trait

impl ToTokens for Colon

impl ToTokens for Impl

impl ToTokens for UseTree

impl ToTokens for Type

impl ToTokens for Match

impl ToTokens for StarEq

impl ToTokens for ExprLit

impl ToTokens for And

impl ToTokens for Plus

impl ToTokens for PatRest

impl ToTokens for Ref

impl ToTokens for Tilde

impl ToTokens for Comma

impl ToTokens for ExprTry

impl ToTokens for OrEq

impl ToTokens for Fields

impl ToTokens for Priv

impl ToTokens for PathSep

impl ToTokens for UsePath