Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/proc-macro-srv/src/server_impl/token_stream.rs')
| -rw-r--r-- | crates/proc-macro-srv/src/server_impl/token_stream.rs | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/crates/proc-macro-srv/src/server_impl/token_stream.rs b/crates/proc-macro-srv/src/server_impl/token_stream.rs index 645f7e7c59..4946a4f2a6 100644 --- a/crates/proc-macro-srv/src/server_impl/token_stream.rs +++ b/crates/proc-macro-srv/src/server_impl/token_stream.rs @@ -2,13 +2,20 @@ use proc_macro::bridge; -use crate::server_impl::{delim_to_external, literal_kind_to_external, TopSubtree}; +use crate::server_impl::{TopSubtree, delim_to_external, literal_kind_to_external}; #[derive(Clone)] pub struct TokenStream<S> { pub(super) token_trees: Vec<tt::TokenTree<S>>, } +// #[derive(Default)] would mean that `S: Default`. +impl<S> Default for TokenStream<S> { + fn default() -> Self { + Self { token_trees: Default::default() } + } +} + impl<S: std::fmt::Debug + Copy> std::fmt::Debug for TokenStream<S> { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { f.debug_struct("TokenStream") @@ -17,17 +24,7 @@ impl<S: std::fmt::Debug + Copy> std::fmt::Debug for TokenStream<S> { } } -impl<S> Default for TokenStream<S> { - fn default() -> Self { - Self { token_trees: vec![] } - } -} - impl<S: Copy> TokenStream<S> { - pub(crate) fn new() -> Self { - TokenStream::default() - } - pub(crate) fn with_subtree(subtree: TopSubtree<S>) -> Self { let delimiter_kind = subtree.top_subtree().delimiter.kind; let mut token_trees = subtree.0; @@ -145,10 +142,6 @@ pub(super) mod token_stream_impls { } impl<S: Copy> TokenStreamBuilder<S> { - pub(super) fn new() -> TokenStreamBuilder<S> { - TokenStreamBuilder { acc: TokenStream::new() } - } - pub(super) fn push(&mut self, stream: TokenStream<S>) { self.acc.token_trees.extend(stream.token_trees) } @@ -157,3 +150,9 @@ impl<S: Copy> TokenStreamBuilder<S> { self.acc } } + +impl<S: Copy> Default for TokenStreamBuilder<S> { + fn default() -> Self { + Self { acc: TokenStream::default() } + } +} |