const_fn/
to_tokens.rs

1// SPDX-License-Identifier: Apache-2.0 OR MIT
2
3use 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}