const_fn/
to_tokens.rs
1use std::iter;
4
5use proc_macro::{TokenStream, TokenTree};
6
7pub(crate) trait ToTokens {
8 fn to_tokens(&self, tokens: &mut TokenStream);
9
10 fn to_token_stream(&self) -> TokenStream {
11 let mut tokens = TokenStream::new();
12 self.to_tokens(&mut tokens);
13 tokens
14 }
15}
16
17impl ToTokens for TokenTree {
18 fn to_tokens(&self, tokens: &mut TokenStream) {
19 tokens.extend(iter::once(self.clone()));
20 }
21}
22
23impl ToTokens for TokenStream {
24 fn to_tokens(&self, tokens: &mut TokenStream) {
25 tokens.extend(self.clone());
26 }
27}