diff --git a/src/lib.rs b/src/lib.rs
index 299f9b8..d261209 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -169,6 +169,13 @@
     }
 }
 
+impl Extend<TokenStream> for TokenStream {
+    fn extend<I: IntoIterator<Item = TokenStream>>(&mut self, streams: I) {
+        self.inner
+            .extend(streams.into_iter().map(|stream| stream.inner))
+    }
+}
+
 /// Collects a number of token trees into a single stream.
 impl FromIterator<TokenTree> for TokenStream {
     fn from_iter<I: IntoIterator<Item = TokenTree>>(streams: I) -> Self {
diff --git a/src/stable.rs b/src/stable.rs
index 0efc32c..30b8e77 100644
--- a/src/stable.rs
+++ b/src/stable.rs
@@ -160,6 +160,13 @@
     }
 }
 
+impl Extend<TokenStream> for TokenStream {
+    fn extend<I: IntoIterator<Item = TokenStream>>(&mut self, streams: I) {
+        self.inner
+            .extend(streams.into_iter().flat_map(|stream| stream));
+    }
+}
+
 pub type TokenTreeIter = vec::IntoIter<TokenTree>;
 
 impl IntoIterator for TokenStream {
diff --git a/src/unstable.rs b/src/unstable.rs
index e024205..a5a48ad 100644
--- a/src/unstable.rs
+++ b/src/unstable.rs
@@ -61,6 +61,13 @@
             TokenStream::Stable(_) => mismatch(),
         }
     }
+
+    fn unwrap_stable(self) -> stable::TokenStream {
+        match self {
+            TokenStream::Nightly(_) => mismatch(),
+            TokenStream::Stable(s) => s,
+        }
+    }
 }
 
 impl FromStr for TokenStream {
@@ -178,6 +185,19 @@
     }
 }
 
+impl Extend<TokenStream> for TokenStream {
+    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()))
+            }
+            TokenStream::Stable(tts) => {
+                tts.extend(streams.into_iter().map(|stream| stream.unwrap_stable()))
+            }
+        }
+    }
+}
+
 impl fmt::Debug for TokenStream {
     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
         match self {
