Don't clone argument names when building final argument hashmap
This commit is contained in:
parent
d7e98d955a
commit
5ce330a0e8
1 changed files with 9 additions and 9 deletions
|
@ -64,24 +64,24 @@ pub enum TypeKind {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Field argument container
|
/// Field argument container
|
||||||
pub struct Arguments {
|
pub struct Arguments<'a> {
|
||||||
args: Option<HashMap<String, InputValue>>,
|
args: Option<HashMap<&'a str, InputValue>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Arguments {
|
impl<'a> Arguments<'a> {
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
pub fn new(mut args: Option<HashMap<String, InputValue>>, meta_args: &Option<Vec<Argument>>) -> Arguments {
|
pub fn new(mut args: Option<HashMap<&'a str, InputValue>>, meta_args: &'a Option<Vec<Argument>>) -> Arguments<'a> {
|
||||||
if meta_args.is_some() && args.is_none() {
|
if meta_args.is_some() && args.is_none() {
|
||||||
args = Some(HashMap::new());
|
args = Some(HashMap::new());
|
||||||
}
|
}
|
||||||
|
|
||||||
if let (&mut Some(ref mut args), &Some(ref meta_args)) = (&mut args, meta_args) {
|
if let (&mut Some(ref mut args), &Some(ref meta_args)) = (&mut args, meta_args) {
|
||||||
for arg in meta_args {
|
for arg in meta_args {
|
||||||
if !args.contains_key(&arg.name) || args[&arg.name].is_null() {
|
if !args.contains_key(arg.name.as_str()) || args[arg.name.as_str()].is_null() {
|
||||||
if let Some(ref default_value) = arg.default_value {
|
if let Some(ref default_value) = arg.default_value {
|
||||||
args.insert(arg.name.clone(), default_value.clone());
|
args.insert(arg.name.as_str(), default_value.clone());
|
||||||
} else {
|
} else {
|
||||||
args.insert(arg.name.clone(), InputValue::null());
|
args.insert(arg.name.as_str(), InputValue::null());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -333,8 +333,8 @@ fn resolve_selection_set_into<T, CtxT>(
|
||||||
&f.name.item,
|
&f.name.item,
|
||||||
&Arguments::new(
|
&Arguments::new(
|
||||||
f.arguments.as_ref().map(|m|
|
f.arguments.as_ref().map(|m|
|
||||||
m.item.iter().cloned().map(|(k, v)|
|
m.item.iter().map(|&(ref k, ref v)|
|
||||||
(k.item, v.item.into_const(exec_vars))).collect()),
|
(k.item.as_str(), v.item.clone().into_const(exec_vars))).collect()),
|
||||||
&meta_field.arguments),
|
&meta_field.arguments),
|
||||||
&mut sub_exec);
|
&mut sub_exec);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue