Implement set_namespace helper for OutFile
diff --git a/syntax/namespace.rs b/syntax/namespace.rs
index 834a1d5..7628b0a 100644
--- a/syntax/namespace.rs
+++ b/syntax/namespace.rs
@@ -2,6 +2,7 @@
 use crate::syntax::Api;
 use quote::IdentFragment;
 use std::fmt::{self, Display};
+use std::iter::FromIterator;
 use std::slice::Iter;
 use syn::parse::{Parse, ParseStream, Result};
 use syn::{Ident, Token};
@@ -10,7 +11,7 @@
     syn::custom_keyword!(namespace);
 }
 
-#[derive(Clone)]
+#[derive(Clone, Default)]
 pub struct Namespace {
     segments: Vec<Ident>,
 }
@@ -37,6 +38,13 @@
     }
 }
 
+impl Default for &Namespace {
+    fn default() -> Self {
+        const ROOT: &Namespace = &Namespace::ROOT;
+        ROOT
+    }
+}
+
 impl Parse for Namespace {
     fn parse(input: ParseStream) -> Result<Self> {
         let segments = QualifiedName::parse_quoted_or_unquoted(input)?.segments;
@@ -67,6 +75,16 @@
     }
 }
 
+impl<'a> FromIterator<&'a Ident> for Namespace {
+    fn from_iter<I>(idents: I) -> Self
+    where
+        I: IntoIterator<Item = &'a Ident>,
+    {
+        let segments = idents.into_iter().cloned().collect();
+        Namespace { segments }
+    }
+}
+
 impl Api {
     pub fn namespace(&self) -> Option<&Namespace> {
         match self {