diff --git a/src/renderer/parameters_context.rs b/src/renderer/parameters_context.rs index 289afba..60b98d3 100644 --- a/src/renderer/parameters_context.rs +++ b/src/renderer/parameters_context.rs @@ -29,8 +29,8 @@ pub struct OwnedPath { pub keys: Vec, } -impl From> for OwnedRValue { - fn from(original: RValue<'_>) -> Self { +impl From<&RValue<'_>> for OwnedRValue { + fn from(original: &RValue<'_>) -> Self { match original { RValue::RVString(text) => OwnedRValue::RVString(text.to_owned()), RValue::RVPath(path) => OwnedRValue::RVPath(OwnedPath { @@ -42,6 +42,24 @@ impl From> for OwnedRValue { pub struct NewParametersContext { params: HashMap, + breadcrumbs: Vec>, +} + +impl NewParametersContext { + pub fn new( + breadcrumbs: &Vec<&dyn ContextElement>, + params: &Vec, + ) -> NewParametersContext { + let owned_params: HashMap = params + .iter() + .map(|kvpair| (kvpair.key.to_string(), OwnedRValue::from(&kvpair.value))) + .collect(); + + NewParametersContext { + params: owned_params, + breadcrumbs: Vec::new(), + } + } } #[derive(Clone, Debug)]