From 5af83beb6f10023cef7eba192a0b190518fe967b Mon Sep 17 00:00:00 2001 From: troido Date: Mon, 28 Sep 2020 21:34:12 +0200 Subject: better type validation and spawners set home argument on their spawned template --- src/parameterexpression.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src/parameterexpression.rs') diff --git a/src/parameterexpression.rs b/src/parameterexpression.rs index dfba562..0208fb9 100644 --- a/src/parameterexpression.rs +++ b/src/parameterexpression.rs @@ -32,11 +32,11 @@ pub enum EvaluationError { impl ParameterExpression { - pub fn evaluate(&self, arguments: &HashMap, template: &Template) -> Result { + pub fn evaluate(&self, arguments: &HashMap>, template: &Template) -> Result { self.evaluate_(arguments, template, 0) } - fn evaluate_(&self, arguments: &HashMap, template: &Template, nesting: usize) -> Result { + fn evaluate_(&self, arguments: &HashMap>, template: &Template, nesting: usize) -> Result { if nesting > MAX_NESTING { return Err(EvaluationError::Other("Maximum nesting reached in parameter evaluation".to_string())); } @@ -61,7 +61,9 @@ impl ParameterExpression { })) } Self::Argument(argname) => { - Ok(arguments.get(argname.as_str()).ok_or(EvaluationError::MissingArgument(argname.to_string()))?.clone()) + arguments.get(argname.as_str()) + .ok_or(EvaluationError::Other(format!("unknown argument {}", argname)))?.clone() + .ok_or(EvaluationError::MissingArgument(argname.to_string())) } Self::Random(options) => { let r = rand::thread_rng().gen_range(0, options.len()); -- cgit