diff --git a/src/renderer/renderer.rs b/src/renderer/renderer.rs index b7b9e22..eef9a3f 100644 --- a/src/renderer/renderer.rs +++ b/src/renderer/renderer.rs @@ -1019,7 +1019,7 @@ impl<'a> DustRenderer<'a> { .as_ref() .map(|ice| ice.get_context_element_reference()) }); - let right_side_ce = right_side.as_ref().map(|maybe_ice| { + let mut right_side_ce = right_side.as_ref().map(|maybe_ice| { maybe_ice .as_ref() .map(|ice| ice.get_context_element_reference()) @@ -1037,6 +1037,16 @@ impl<'a> DustRenderer<'a> { // If key did not exist at all, return None return None; } + let right_side_cast = match (right_side_ce, type_rendered) { + (Some(Ok(ce)), Some(target_type)) => ce.cast_to_type(&target_type), + _ => None, + }; + match right_side_cast.as_ref() { + Some(ice) => { + right_side_ce = Some(Ok(ice.get_context_element_reference())); + } + None => (), + } match tag { // Special case: when comparing two RVPaths, if the path // points to the same value then they are equal. This is