Factor out a Pair constructor for common parser use case
diff --git a/syntax/parse.rs b/syntax/parse.rs
index 2a42f99..b229d8b 100644
--- a/syntax/parse.rs
+++ b/syntax/parse.rs
@@ -497,11 +497,7 @@
     let throws = throws_tokens.is_some();
     let unsafety = foreign_fn.sig.unsafety;
     let fn_token = foreign_fn.sig.fn_token;
-    let name = Pair::new(
-        namespace,
-        cxx_name.unwrap_or(foreign_fn.sig.ident.clone()),
-        rust_name.unwrap_or(foreign_fn.sig.ident.clone()),
-    );
+    let name = pair(namespace, &foreign_fn.sig.ident, cxx_name, rust_name);
     let generics = generics.clone();
     let paren_token = foreign_fn.sig.paren_token;
     let semi_token = foreign_fn.semi_token;
@@ -1029,3 +1025,12 @@
         ty => Ok(Some(ty)),
     }
 }
+
+fn pair(namespace: Namespace, default: &Ident, cxx: Option<Ident>, rust: Option<Ident>) -> Pair {
+    let default = || default.clone();
+    Pair::new(
+        namespace,
+        cxx.unwrap_or_else(default),
+        rust.unwrap_or_else(default),
+    )
+}