Something went wrong. Try again.
Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113// SPDX-License-Identifier: Apache-2.0 OR MIT
use super::ToTokens;use core::iter;use proc_macro2::{TokenStream, TokenTree};
/// TokenStream extension trait with methods for appending tokens.////// This trait is sealed and cannot be implemented outside of the `quote` crate.pub trait TokenStreamExt: private::Sealed { /// For use by `ToTokens` implementations. /// /// Appends the token specified to this list of tokens. fn append<U>(&mut self, token: U) where U: Into<TokenTree>;
/// For use by `ToTokens` implementations. /// /// ``` /// # use quote::{quote, TokenStreamExt, ToTokens}; /// # use proc_macro2::TokenStream; /// # /// struct X; /// /// impl ToTokens for X { /// fn to_tokens(&self, tokens: &mut TokenStream) { /// tokens.append_all(&[true, false]); /// } /// } /// /// let tokens = quote!(#X); /// assert_eq!(tokens.to_string(), "true false"); /// ``` fn append_all<I>(&mut self, iter: I) where I: IntoIterator, I::Item: ToTokens;
/// For use by `ToTokens` implementations. /// /// Appends all of the items in the iterator `I`, separated by the tokens /// `U`. fn append_separated<I, U>(&mut self, iter: I, op: U) where I: IntoIterator, I::Item: ToTokens, U: ToTokens;
/// For use by `ToTokens` implementations. /// /// Appends all tokens in the iterator `I`, appending `U` after each /// element, including after the last element of the iterator. fn append_terminated<I, U>(&mut self, iter: I, term: U) where I: IntoIterator, I::Item: ToTokens, U: ToTokens;}
impl TokenStreamExt for TokenStream { fn append<U>(&mut self, token: U) where U: Into<TokenTree>, { self.extend(iter::once(token.into())); }
fn append_all<I>(&mut self, iter: I) where I: IntoIterator, I::Item: ToTokens, { for token in iter { token.to_tokens(self); } }
fn append_separated<I, U>(&mut self, iter: I, op: U) where I: IntoIterator, I::Item: ToTokens, U: ToTokens, { for (i, token) in iter.into_iter().enumerate() { if i > 0 { op.to_tokens(self); } token.to_tokens(self); } }
fn append_terminated<I, U>(&mut self, iter: I, term: U) where I: IntoIterator, I::Item: ToTokens, U: ToTokens, { for token in iter { token.to_tokens(self); term.to_tokens(self); } }}
mod private { use proc_macro2::TokenStream;
pub trait Sealed {}
impl Sealed for TokenStream {}}