Enable rich API on 1.29.0
diff --git a/src/unstable.rs b/src/unstable.rs
index caf42ce..3e940ca 100644
--- a/src/unstable.rs
+++ b/src/unstable.rs
@@ -210,11 +210,29 @@
fn extend<I: IntoIterator<Item = TokenTree>>(&mut self, streams: I) {
match self {
TokenStream::Nightly(tts) => {
- tts.extend(
- streams
+ #[cfg(not(slow_extend))]
+ {
+ tts.extend(
+ streams
+ .into_iter()
+ .map(|t| TokenStream::from(t).unwrap_nightly()),
+ );
+ }
+ #[cfg(slow_extend)]
+ {
+ *tts = tts
+ .clone()
.into_iter()
- .map(|t| TokenStream::from(t).unwrap_nightly()),
- );
+ .chain(
+ streams
+ .into_iter()
+ .map(TokenStream::from)
+ .flat_map(|t| match t {
+ TokenStream::Nightly(tts) => tts.into_iter(),
+ _ => mismatch(),
+ }),
+ ).collect();
+ }
}
TokenStream::Stable(tts) => tts.extend(streams),
}
@@ -225,7 +243,24 @@
fn extend<I: IntoIterator<Item = TokenStream>>(&mut self, streams: I) {
match self {
TokenStream::Nightly(tts) => {
- tts.extend(streams.into_iter().map(|stream| stream.unwrap_nightly()))
+ #[cfg(not(slow_extend))]
+ {
+ tts.extend(streams.into_iter().map(|stream| stream.unwrap_nightly()));
+ }
+ #[cfg(slow_extend)]
+ {
+ *tts = tts
+ .clone()
+ .into_iter()
+ .chain(
+ streams
+ .into_iter()
+ .flat_map(|t| match t {
+ TokenStream::Nightly(tts) => tts.into_iter(),
+ _ => mismatch(),
+ }),
+ ).collect();
+ }
}
TokenStream::Stable(tts) => {
tts.extend(streams.into_iter().map(|stream| stream.unwrap_stable()))