diff --git a/src/renderer/parameters_context.rs b/src/renderer/parameters_context.rs index 3649044..a9b52f5 100644 --- a/src/renderer/parameters_context.rs +++ b/src/renderer/parameters_context.rs @@ -54,10 +54,7 @@ pub struct ParametersContext { } impl ParametersContext { - pub fn new( - breadcrumbs: &Vec<&dyn ContextElement>, - params: &Vec, - ) -> ParametersContext { + pub fn new(breadcrumbs: &Vec<&dyn ContextElement>, params: &Vec) -> ParametersContext { let owned_params: HashMap = params .iter() .map(|kvpair| (kvpair.key.to_string(), OwnedRValue::from(&kvpair.value))) @@ -104,10 +101,19 @@ impl Walkable for ParametersContext { impl Clone for ParametersContext { fn clone(&self) -> Self { - // TODO: Implement clone + let new_params: HashMap = self + .params + .iter() + .map(|(k, v)| (k.clone(), v.clone())) + .collect(); + let new_breadcrumbs: Vec> = self + .breadcrumbs + .iter() + .map(|bread| bread.clone_to_box()) + .collect(); ParametersContext { - params: HashMap::new(), - breadcrumbs: Vec::new(), + params: new_params, + breadcrumbs: new_breadcrumbs, } } }