pub trait ToTokens {
// Required method
fn to_tokens(&self, tokens: &mut Tokens);
// Provided method
fn into_tokens(self) -> Tokens
where Self: Sized { ... }
}Expand description
Types that can be interpolated inside a quote! invocation.
Required Methods§
Sourcefn to_tokens(&self, tokens: &mut Tokens)
fn to_tokens(&self, tokens: &mut Tokens)
Write self to the given Tokens.
Example implementation for a struct representing Rust paths like
std::cmp::PartialEq:
extern crate quote;
use quote::{Tokens, ToTokens};
extern crate proc_macro2;
use proc_macro2::{TokenTree, TokenNode, Spacing, Span};
pub struct Path {
pub global: bool,
pub segments: Vec<PathSegment>,
}
impl ToTokens for Path {
fn to_tokens(&self, tokens: &mut Tokens) {
for (i, segment) in self.segments.iter().enumerate() {
if i > 0 || self.global {
// Double colon `::`
tokens.append(TokenTree {
span: Span::def_site(),
kind: TokenNode::Op(':', Spacing::Joint),
});
tokens.append(TokenTree {
span: Span::def_site(),
kind: TokenNode::Op(':', Spacing::Alone),
});
}
segment.to_tokens(tokens);
}
}
}Provided Methods§
Sourcefn into_tokens(self) -> Tokenswhere
Self: Sized,
fn into_tokens(self) -> Tokenswhere
Self: Sized,
Convert self directly into a Tokens object.
This method is implicitly implemented using to_tokens, and acts as a
convenience method for consumers of the ToTokens trait.