Skip to content

Commit 5ce330a

Browse files
committed
Don't clone argument names when building final argument hashmap
1 parent d7e98d9 commit 5ce330a

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

src/types/base.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -64,24 +64,24 @@ pub enum TypeKind {
6464
}
6565

6666
/// Field argument container
67-
pub struct Arguments {
68-
args: Option<HashMap<String, InputValue>>,
67+
pub struct Arguments<'a> {
68+
args: Option<HashMap<&'a str, InputValue>>,
6969
}
7070

71-
impl Arguments {
71+
impl<'a> Arguments<'a> {
7272
#[doc(hidden)]
73-
pub fn new(mut args: Option<HashMap<String, InputValue>>, meta_args: &Option<Vec<Argument>>) -> Arguments {
73+
pub fn new(mut args: Option<HashMap<&'a str, InputValue>>, meta_args: &'a Option<Vec<Argument>>) -> Arguments<'a> {
7474
if meta_args.is_some() && args.is_none() {
7575
args = Some(HashMap::new());
7676
}
7777

7878
if let (&mut Some(ref mut args), &Some(ref meta_args)) = (&mut args, meta_args) {
7979
for arg in meta_args {
80-
if !args.contains_key(&arg.name) || args[&arg.name].is_null() {
80+
if !args.contains_key(arg.name.as_str()) || args[arg.name.as_str()].is_null() {
8181
if let Some(ref default_value) = arg.default_value {
82-
args.insert(arg.name.clone(), default_value.clone());
82+
args.insert(arg.name.as_str(), default_value.clone());
8383
} else {
84-
args.insert(arg.name.clone(), InputValue::null());
84+
args.insert(arg.name.as_str(), InputValue::null());
8585
}
8686
}
8787
}
@@ -333,8 +333,8 @@ fn resolve_selection_set_into<T, CtxT>(
333333
&f.name.item,
334334
&Arguments::new(
335335
f.arguments.as_ref().map(|m|
336-
m.item.iter().cloned().map(|(k, v)|
337-
(k.item, v.item.into_const(exec_vars))).collect()),
336+
m.item.iter().map(|&(ref k, ref v)|
337+
(k.item.as_str(), v.item.clone().into_const(exec_vars))).collect()),
338338
&meta_field.arguments),
339339
&mut sub_exec);
340340

0 commit comments

Comments
 (0)