From c3a282d04f1fd5c7cc4cf5ebb478129c2b1c42fa Mon Sep 17 00:00:00 2001 From: troido Date: Sun, 27 Sep 2020 11:02:43 +0200 Subject: removed "args" from the code --- src/assemblage.rs | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) (limited to 'src/assemblage.rs') diff --git a/src/assemblage.rs b/src/assemblage.rs index 82b25da..e4554eb 100644 --- a/src/assemblage.rs +++ b/src/assemblage.rs @@ -33,25 +33,22 @@ impl Assemblage { Ok(()) } - fn prepare_arguments(&self, args: &[Parameter], kwargs: &HashMap) -> AnyResult> { + fn prepare_arguments(&self, kwargs: &HashMap) -> AnyResult> { let mut arguments: HashMap<&str, Parameter> = HashMap::new(); - for (idx, (name, typ, def)) in self.arguments.iter().enumerate() { - let value: Option = { + for (name, typ, def) in self.arguments.iter() { + let param: Parameter= { if let Some(val) = kwargs.get(name) { - Some(val.clone()) - } else if let Some(val) = args.get(idx) { - Some(val.clone()) + val.clone() } else if let Some(val) = def { - Some(val.clone()) + val.clone() } else { - None + return Err(aerr!("argument <{:?}> has no value", (name, typ, def))) } }; - let param = value.ok_or(aerr!("argument <{:?}> has no value", (idx, (name, typ, def))))?; if param.paramtype() != *typ { return Err(aerr!( "argument has incorrect type: {:?}, {:?}, {:?}", - (idx, (name, typ, def)), + (name, typ, def), param.paramtype(), param )); @@ -62,10 +59,9 @@ impl Assemblage { } pub fn instantiate(&self, template: &Template) -> AnyResult>{ - let args = &template.args; let kwargs = &template.kwargs; let mut components: Vec = Vec::new(); - let arguments = self.prepare_arguments(args, kwargs)?; + let arguments = self.prepare_arguments(kwargs)?; for (comptype, compparams) in &self.components { let mut compargs: HashMap<&str, Parameter> = HashMap::new(); for (name, param) in compparams { -- cgit