Expose Pair construction only from differing idents
diff --git a/syntax/names.rs b/syntax/names.rs
index 586c017..4aed656 100644
--- a/syntax/names.rs
+++ b/syntax/names.rs
@@ -3,27 +3,11 @@
 use std::iter;
 
 impl Pair {
-    // Use this constructor when the item can't have a different name in Rust
-    // and C++.
-    pub fn new(namespace: Namespace, ident: Ident) -> Self {
+    pub fn new(namespace: Namespace, cxx: Ident, rust: Ident) -> Self {
         Self {
             namespace,
-            cxx: ident.clone(),
-            rust: ident,
-        }
-    }
-
-    // Use this constructor when attributes such as #[rust_name] can be used to
-    // potentially give a different name in Rust vs C++.
-    pub fn new_from_differing_names(
-        namespace: Namespace,
-        cxx_ident: Ident,
-        rust_ident: Ident,
-    ) -> Self {
-        Self {
-            namespace,
-            cxx: cxx_ident,
-            rust: rust_ident,
+            cxx,
+            rust,
         }
     }
 
diff --git a/syntax/parse.rs b/syntax/parse.rs
index 4b3e435..e6cfd04 100644
--- a/syntax/parse.rs
+++ b/syntax/parse.rs
@@ -106,7 +106,7 @@
         doc,
         derives,
         struct_token: item.struct_token,
-        name: Pair::new(namespace, item.ident),
+        name: Pair::new(namespace, item.ident.clone(), item.ident),
         brace_token: named_fields.brace_token,
         fields,
     }))
@@ -192,7 +192,7 @@
         doc,
         derives,
         enum_token,
-        name: Pair::new(namespace, item.ident),
+        name: Pair::new(namespace, item.ident.clone(), item.ident),
         brace_token,
         variants,
         repr,
@@ -351,7 +351,7 @@
         doc,
         derives,
         type_token,
-        name: Pair::new(namespace, ident),
+        name: Pair::new(namespace, ident.clone(), ident),
         colon_token: None,
         bounds: Vec::new(),
         semi_token,
@@ -483,7 +483,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_from_differing_names(
+    let name = Pair::new(
         namespace,
         cxx_name.unwrap_or(foreign_fn.sig.ident.clone()),
         rust_name.unwrap_or(foreign_fn.sig.ident.clone()),
@@ -586,7 +586,7 @@
         doc,
         derives,
         type_token,
-        name: Pair::new(namespace, ident),
+        name: Pair::new(namespace, ident.clone(), ident),
         eq_token,
         ty,
         semi_token,
@@ -658,7 +658,7 @@
         doc,
         derives,
         type_token,
-        name: Pair::new(namespace, ident),
+        name: Pair::new(namespace, ident.clone(), ident),
         colon_token: Some(colon_token),
         bounds,
         semi_token,