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)
fn to_tokens(&self, tokens: &mut TokenStream)
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)
fn to_token_stream(&self) -> TokenStream
proc_macro_totokens
#130977)将 self
直接转换为 TokenStream
对象。
此方法使用 to_tokens
隐式实现,并作为 ToTokens
trait 使用者的便捷方法。
源代码fn into_token_stream(self) -> TokenStreamwhere Self: Sized,
🔬这是一个仅限 nightly 版本的实验性 API。(proc_macro_totokens
#130977)
fn into_token_stream(self) -> TokenStreamwhere Self: Sized,
proc_macro_totokens
#130977)将 self
直接转换为 TokenStream
对象。
此方法使用 to_tokens
隐式实现,并作为 ToTokens
trait 使用者的便捷方法。
外部类型上的实现§
源代码§impl ToTokens for bool
impl ToTokens for bool
源代码§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
🔬这是一个仅限 nightly 版本的实验性 API。(
proc_macro_totokens
#130977)源代码§impl ToTokens for char
impl ToTokens for char
源代码§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
🔬这是一个仅限 nightly 版本的实验性 API。(
proc_macro_totokens
#130977)源代码§impl ToTokens for f32
impl ToTokens for f32
源代码§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
🔬这是一个仅限 nightly 版本的实验性 API。(
proc_macro_totokens
#130977)源代码§impl ToTokens for f64
impl ToTokens for f64
源代码§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
🔬这是一个仅限 nightly 版本的实验性 API。(
proc_macro_totokens
#130977)源代码§impl ToTokens for i8
impl ToTokens for i8
源代码§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
🔬这是一个仅限 nightly 版本的实验性 API。(
proc_macro_totokens
#130977)源代码§impl ToTokens for i16
impl ToTokens for i16
源代码§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
🔬这是一个仅限 nightly 版本的实验性 API。(
proc_macro_totokens
#130977)源代码§impl ToTokens for i32
impl ToTokens for i32
源代码§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
🔬这是一个仅限 nightly 版本的实验性 API。(
proc_macro_totokens
#130977)源代码§impl ToTokens for i64
impl ToTokens for i64
源代码§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
🔬这是一个仅限 nightly 版本的实验性 API。(
proc_macro_totokens
#130977)源代码§impl ToTokens for i128
impl ToTokens for i128
源代码§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
🔬这是一个仅限 nightly 版本的实验性 API。(
proc_macro_totokens
#130977)源代码§impl ToTokens for isize
impl ToTokens for isize
源代码§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
🔬这是一个仅限 nightly 版本的实验性 API。(
proc_macro_totokens
#130977)源代码§impl ToTokens for str
impl ToTokens for str
源代码§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
🔬这是一个仅限 nightly 版本的实验性 API。(
proc_macro_totokens
#130977)源代码§impl ToTokens for u8
impl ToTokens for u8
源代码§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
🔬这是一个仅限 nightly 版本的实验性 API。(
proc_macro_totokens
#130977)源代码§impl ToTokens for u16
impl ToTokens for u16
源代码§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
🔬这是一个仅限 nightly 版本的实验性 API。(
proc_macro_totokens
#130977)源代码§impl ToTokens for u32
impl ToTokens for u32
源代码§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
🔬这是一个仅限 nightly 版本的实验性 API。(
proc_macro_totokens
#130977)源代码§impl ToTokens for u64
impl ToTokens for u64
源代码§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
🔬这是一个仅限 nightly 版本的实验性 API。(
proc_macro_totokens
#130977)源代码§impl ToTokens for u128
impl ToTokens for u128
源代码§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
🔬这是一个仅限 nightly 版本的实验性 API。(
proc_macro_totokens
#130977)源代码§impl ToTokens for usize
impl ToTokens for usize
源代码§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
🔬这是一个仅限 nightly 版本的实验性 API。(
proc_macro_totokens
#130977)源代码§impl ToTokens for CString
impl ToTokens for CString
源代码§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
🔬这是一个仅限 nightly 版本的实验性 API。(
proc_macro_totokens
#130977)源代码§impl ToTokens for String
impl ToTokens for String
源代码§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
🔬这是一个仅限 nightly 版本的实验性 API。(
proc_macro_totokens
#130977)源代码§impl ToTokens for CStr
impl ToTokens for CStr
源代码§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
🔬这是一个仅限 nightly 版本的实验性 API。(
proc_macro_totokens
#130977)源代码§impl<T: ToTokens + ToOwned + ?Sized> ToTokens for Cow<'_, T>
impl<T: ToTokens + ToOwned + ?Sized> ToTokens for Cow<'_, T>
源代码§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
🔬这是一个仅限 nightly 版本的实验性 API。(
proc_macro_totokens
#130977)源代码§impl<T: ToTokens + ?Sized> ToTokens for &T
impl<T: ToTokens + ?Sized> ToTokens for &T
源代码§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
🔬这是一个仅限 nightly 版本的实验性 API。(
proc_macro_totokens
#130977)源代码§impl<T: ToTokens + ?Sized> ToTokens for &mut T
impl<T: ToTokens + ?Sized> ToTokens for &mut T
源代码§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
🔬这是一个仅限 nightly 版本的实验性 API。(
proc_macro_totokens
#130977)源代码§impl<T: ToTokens + ?Sized> ToTokens for Box<T>
impl<T: ToTokens + ?Sized> ToTokens for Box<T>
源代码§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
🔬这是一个仅限 nightly 版本的实验性 API。(
proc_macro_totokens
#130977)源代码§impl<T: ToTokens + ?Sized> ToTokens for Rc<T>
impl<T: ToTokens + ?Sized> ToTokens for Rc<T>
源代码§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
🔬这是一个仅限 nightly 版本的实验性 API。(
proc_macro_totokens
#130977)源代码§impl<T: ToTokens> ToTokens for Option<T>
impl<T: ToTokens> ToTokens for Option<T>
源代码§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
🔬这是一个仅限 nightly 版本的实验性 API。(
proc_macro_totokens
#130977)