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),
+ )
+}