Ported over the comparison helpers to using the new tap function.
This commit is contained in:
parent
b35874f19e
commit
a749f91e8e
@ -375,44 +375,47 @@ impl<'a> DustRenderer<'a> {
|
|||||||
let param_map =
|
let param_map =
|
||||||
ParametersContext::new(self, breadcrumbs, ¶meterized_block.params);
|
ParametersContext::new(self, breadcrumbs, ¶meterized_block.params);
|
||||||
|
|
||||||
if !param_map.contains_key("key") {
|
let left_side = self.tap(breadcrumbs, ¶m_map, "key");
|
||||||
return Ok("".to_owned());
|
let right_side = self.tap(breadcrumbs, ¶m_map, "value");
|
||||||
}
|
|
||||||
let left_side = param_map
|
let left_side_ce = left_side.as_ref().map(|maybe_ice| {
|
||||||
.walk("key")
|
maybe_ice
|
||||||
.map(|ice| ice.into_context_element(self, breadcrumbs));
|
.as_ref()
|
||||||
let right_side = param_map
|
.map(|ice| ice.get_context_element_reference())
|
||||||
.walk("value")
|
});
|
||||||
.map(|ice| ice.into_context_element(self, breadcrumbs));
|
let right_side_ce = right_side.as_ref().map(|maybe_ice| {
|
||||||
|
maybe_ice
|
||||||
|
.as_ref()
|
||||||
|
.map(|ice| ice.get_context_element_reference())
|
||||||
|
});
|
||||||
|
return match (left_side_ce, right_side_ce) {
|
||||||
|
// If "key" is not present at all, return a blank string
|
||||||
|
(None, _) => Ok("".to_owned()),
|
||||||
|
(Some(_maybe_left_ce), _) => {
|
||||||
// Special case: when comparing two RVPaths, if the
|
// Special case: when comparing two RVPaths, if the
|
||||||
// path points to the same value then they are
|
// path points to the same value then they are
|
||||||
// equal. This is particularly important for objects
|
// equal. This is particularly important for objects
|
||||||
// which compare memory locations rather than contents
|
// which compare memory locations rather than contents
|
||||||
// (javascript object equality).
|
// (javascript object equality).
|
||||||
if Self::are_paths_identical(&left_side, &right_side)
|
if Self::are_paths_identical(&left_side_ce, &right_side_ce)
|
||||||
|| left_side.as_ref().map(|maybe_ice| {
|
|| left_side_ce.unwrap_or(Err(&WalkError::CantWalk))
|
||||||
maybe_ice
|
== right_side_ce.unwrap_or(Err(&WalkError::CantWalk))
|
||||||
.as_ref()
|
|
||||||
.map(|ice| ice.get_context_element_reference())
|
|
||||||
}) == right_side.as_ref().map(|maybe_ice| {
|
|
||||||
maybe_ice
|
|
||||||
.as_ref()
|
|
||||||
.map(|ice| ice.get_context_element_reference())
|
|
||||||
})
|
|
||||||
{
|
{
|
||||||
return self.render_maybe_body(
|
self.render_maybe_body(
|
||||||
¶meterized_block.contents,
|
¶meterized_block.contents,
|
||||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||||
blocks,
|
blocks,
|
||||||
);
|
)
|
||||||
} else {
|
} else {
|
||||||
return self.render_maybe_body(
|
self.render_maybe_body(
|
||||||
¶meterized_block.else_contents,
|
¶meterized_block.else_contents,
|
||||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||||
blocks,
|
blocks,
|
||||||
);
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
DustTag::DTHelperNotEquals(parameterized_block) => {
|
DustTag::DTHelperNotEquals(parameterized_block) => {
|
||||||
let new_breadcrumbs = self.new_breadcrumbs_partial(
|
let new_breadcrumbs = self.new_breadcrumbs_partial(
|
||||||
breadcrumbs,
|
breadcrumbs,
|
||||||
@ -424,44 +427,47 @@ impl<'a> DustRenderer<'a> {
|
|||||||
let param_map =
|
let param_map =
|
||||||
ParametersContext::new(self, breadcrumbs, ¶meterized_block.params);
|
ParametersContext::new(self, breadcrumbs, ¶meterized_block.params);
|
||||||
|
|
||||||
if !param_map.contains_key("key") {
|
let left_side = self.tap(breadcrumbs, ¶m_map, "key");
|
||||||
return Ok("".to_owned());
|
let right_side = self.tap(breadcrumbs, ¶m_map, "value");
|
||||||
}
|
|
||||||
let left_side = param_map
|
let left_side_ce = left_side.as_ref().map(|maybe_ice| {
|
||||||
.walk("key")
|
maybe_ice
|
||||||
.map(|ice| ice.into_context_element(self, breadcrumbs));
|
.as_ref()
|
||||||
let right_side = param_map
|
.map(|ice| ice.get_context_element_reference())
|
||||||
.walk("value")
|
});
|
||||||
.map(|ice| ice.into_context_element(self, breadcrumbs));
|
let right_side_ce = right_side.as_ref().map(|maybe_ice| {
|
||||||
|
maybe_ice
|
||||||
|
.as_ref()
|
||||||
|
.map(|ice| ice.get_context_element_reference())
|
||||||
|
});
|
||||||
|
return match (left_side_ce, right_side_ce) {
|
||||||
|
// If "key" is not present at all, return a blank string
|
||||||
|
(None, _) => Ok("".to_owned()),
|
||||||
|
(Some(_maybe_left_ce), _) => {
|
||||||
// Special case: when comparing two RVPaths, if the
|
// Special case: when comparing two RVPaths, if the
|
||||||
// path points to the same value then they are
|
// path points to the same value then they are
|
||||||
// equal. This is particularly important for objects
|
// equal. This is particularly important for objects
|
||||||
// which compare memory locations rather than contents
|
// which compare memory locations rather than contents
|
||||||
// (javascript object equality).
|
// (javascript object equality).
|
||||||
if Self::are_paths_identical(&left_side, &right_side)
|
if Self::are_paths_identical(&left_side_ce, &right_side_ce)
|
||||||
|| left_side.as_ref().map(|maybe_ice| {
|
|| left_side_ce.unwrap_or(Err(&WalkError::CantWalk))
|
||||||
maybe_ice
|
== right_side_ce.unwrap_or(Err(&WalkError::CantWalk))
|
||||||
.as_ref()
|
|
||||||
.map(|ice| ice.get_context_element_reference())
|
|
||||||
}) == right_side.as_ref().map(|maybe_ice| {
|
|
||||||
maybe_ice
|
|
||||||
.as_ref()
|
|
||||||
.map(|ice| ice.get_context_element_reference())
|
|
||||||
})
|
|
||||||
{
|
{
|
||||||
return self.render_maybe_body(
|
self.render_maybe_body(
|
||||||
¶meterized_block.else_contents,
|
¶meterized_block.else_contents,
|
||||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||||
blocks,
|
blocks,
|
||||||
);
|
)
|
||||||
} else {
|
} else {
|
||||||
return self.render_maybe_body(
|
self.render_maybe_body(
|
||||||
¶meterized_block.contents,
|
¶meterized_block.contents,
|
||||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||||
blocks,
|
blocks,
|
||||||
);
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
DustTag::DTHelperGreaterThan(parameterized_block) => {
|
DustTag::DTHelperGreaterThan(parameterized_block) => {
|
||||||
let new_breadcrumbs = self.new_breadcrumbs_partial(
|
let new_breadcrumbs = self.new_breadcrumbs_partial(
|
||||||
breadcrumbs,
|
breadcrumbs,
|
||||||
@ -472,41 +478,36 @@ impl<'a> DustRenderer<'a> {
|
|||||||
|
|
||||||
let param_map =
|
let param_map =
|
||||||
ParametersContext::new(self, breadcrumbs, ¶meterized_block.params);
|
ParametersContext::new(self, breadcrumbs, ¶meterized_block.params);
|
||||||
if !param_map.contains_key("key") {
|
|
||||||
return Ok("".to_owned());
|
let left_side = self.tap(breadcrumbs, ¶m_map, "key");
|
||||||
}
|
let right_side = self.tap(breadcrumbs, ¶m_map, "value");
|
||||||
let left_side = param_map
|
|
||||||
.walk("key")
|
let left_side_ce = left_side.as_ref().map(|maybe_ice| {
|
||||||
.map(|ice| ice.into_context_element(self, breadcrumbs));
|
maybe_ice
|
||||||
let right_side = param_map
|
.as_ref()
|
||||||
.walk("value")
|
.map(|ice| ice.get_context_element_reference())
|
||||||
.map(|ice| ice.into_context_element(self, breadcrumbs));
|
});
|
||||||
match (left_side, right_side) {
|
let right_side_ce = right_side.as_ref().map(|maybe_ice| {
|
||||||
(Ok(Some(left_side_unwrapped)), Ok(Some(right_side_unwrapped))) => {
|
maybe_ice
|
||||||
if left_side_unwrapped.get_context_element_reference()
|
.as_ref()
|
||||||
> right_side_unwrapped.get_context_element_reference()
|
.map(|ice| ice.get_context_element_reference())
|
||||||
{
|
});
|
||||||
return self.render_maybe_body(
|
return match (left_side_ce, right_side_ce) {
|
||||||
|
// If "key" is not present at all, return a blank string
|
||||||
|
(None, _) => Ok("".to_owned()),
|
||||||
|
(Some(Ok(left_value)), Some(Ok(right_value))) if left_value > right_value => {
|
||||||
|
self.render_maybe_body(
|
||||||
¶meterized_block.contents,
|
¶meterized_block.contents,
|
||||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||||
blocks,
|
blocks,
|
||||||
);
|
|
||||||
} else {
|
|
||||||
return self.render_maybe_body(
|
|
||||||
¶meterized_block.else_contents,
|
|
||||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
|
||||||
blocks,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_ => {
|
|
||||||
return self.render_maybe_body(
|
|
||||||
¶meterized_block.else_contents,
|
|
||||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
|
||||||
blocks,
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
_ => self.render_maybe_body(
|
||||||
|
¶meterized_block.else_contents,
|
||||||
|
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||||
|
blocks,
|
||||||
|
),
|
||||||
|
};
|
||||||
}
|
}
|
||||||
DustTag::DTHelperGreaterThanOrEquals(parameterized_block) => {
|
DustTag::DTHelperGreaterThanOrEquals(parameterized_block) => {
|
||||||
let new_breadcrumbs = self.new_breadcrumbs_partial(
|
let new_breadcrumbs = self.new_breadcrumbs_partial(
|
||||||
@ -518,41 +519,36 @@ impl<'a> DustRenderer<'a> {
|
|||||||
|
|
||||||
let param_map =
|
let param_map =
|
||||||
ParametersContext::new(self, breadcrumbs, ¶meterized_block.params);
|
ParametersContext::new(self, breadcrumbs, ¶meterized_block.params);
|
||||||
if !param_map.contains_key("key") {
|
|
||||||
return Ok("".to_owned());
|
let left_side = self.tap(breadcrumbs, ¶m_map, "key");
|
||||||
}
|
let right_side = self.tap(breadcrumbs, ¶m_map, "value");
|
||||||
let left_side = param_map
|
|
||||||
.walk("key")
|
let left_side_ce = left_side.as_ref().map(|maybe_ice| {
|
||||||
.map(|ice| ice.into_context_element(self, breadcrumbs));
|
maybe_ice
|
||||||
let right_side = param_map
|
.as_ref()
|
||||||
.walk("value")
|
.map(|ice| ice.get_context_element_reference())
|
||||||
.map(|ice| ice.into_context_element(self, breadcrumbs));
|
});
|
||||||
match (left_side, right_side) {
|
let right_side_ce = right_side.as_ref().map(|maybe_ice| {
|
||||||
(Ok(Some(left_side_unwrapped)), Ok(Some(right_side_unwrapped))) => {
|
maybe_ice
|
||||||
if left_side_unwrapped.get_context_element_reference()
|
.as_ref()
|
||||||
>= right_side_unwrapped.get_context_element_reference()
|
.map(|ice| ice.get_context_element_reference())
|
||||||
{
|
});
|
||||||
return self.render_maybe_body(
|
return match (left_side_ce, right_side_ce) {
|
||||||
|
// If "key" is not present at all, return a blank string
|
||||||
|
(None, _) => Ok("".to_owned()),
|
||||||
|
(Some(Ok(left_value)), Some(Ok(right_value))) if left_value >= right_value => {
|
||||||
|
self.render_maybe_body(
|
||||||
¶meterized_block.contents,
|
¶meterized_block.contents,
|
||||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||||
blocks,
|
blocks,
|
||||||
);
|
|
||||||
} else {
|
|
||||||
return self.render_maybe_body(
|
|
||||||
¶meterized_block.else_contents,
|
|
||||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
|
||||||
blocks,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_ => {
|
|
||||||
return self.render_maybe_body(
|
|
||||||
¶meterized_block.else_contents,
|
|
||||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
|
||||||
blocks,
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
_ => self.render_maybe_body(
|
||||||
|
¶meterized_block.else_contents,
|
||||||
|
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||||
|
blocks,
|
||||||
|
),
|
||||||
|
};
|
||||||
}
|
}
|
||||||
DustTag::DTHelperLessThan(parameterized_block) => {
|
DustTag::DTHelperLessThan(parameterized_block) => {
|
||||||
let new_breadcrumbs = self.new_breadcrumbs_partial(
|
let new_breadcrumbs = self.new_breadcrumbs_partial(
|
||||||
@ -564,41 +560,36 @@ impl<'a> DustRenderer<'a> {
|
|||||||
|
|
||||||
let param_map =
|
let param_map =
|
||||||
ParametersContext::new(self, breadcrumbs, ¶meterized_block.params);
|
ParametersContext::new(self, breadcrumbs, ¶meterized_block.params);
|
||||||
if !param_map.contains_key("key") {
|
|
||||||
return Ok("".to_owned());
|
let left_side = self.tap(breadcrumbs, ¶m_map, "key");
|
||||||
}
|
let right_side = self.tap(breadcrumbs, ¶m_map, "value");
|
||||||
let left_side = param_map
|
|
||||||
.walk("key")
|
let left_side_ce = left_side.as_ref().map(|maybe_ice| {
|
||||||
.map(|ice| ice.into_context_element(self, breadcrumbs));
|
maybe_ice
|
||||||
let right_side = param_map
|
.as_ref()
|
||||||
.walk("value")
|
.map(|ice| ice.get_context_element_reference())
|
||||||
.map(|ice| ice.into_context_element(self, breadcrumbs));
|
});
|
||||||
match (left_side, right_side) {
|
let right_side_ce = right_side.as_ref().map(|maybe_ice| {
|
||||||
(Ok(Some(left_side_unwrapped)), Ok(Some(right_side_unwrapped))) => {
|
maybe_ice
|
||||||
if left_side_unwrapped.get_context_element_reference()
|
.as_ref()
|
||||||
< right_side_unwrapped.get_context_element_reference()
|
.map(|ice| ice.get_context_element_reference())
|
||||||
{
|
});
|
||||||
return self.render_maybe_body(
|
return match (left_side_ce, right_side_ce) {
|
||||||
|
// If "key" is not present at all, return a blank string
|
||||||
|
(None, _) => Ok("".to_owned()),
|
||||||
|
(Some(Ok(left_value)), Some(Ok(right_value))) if left_value < right_value => {
|
||||||
|
self.render_maybe_body(
|
||||||
¶meterized_block.contents,
|
¶meterized_block.contents,
|
||||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||||
blocks,
|
blocks,
|
||||||
);
|
|
||||||
} else {
|
|
||||||
return self.render_maybe_body(
|
|
||||||
¶meterized_block.else_contents,
|
|
||||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
|
||||||
blocks,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_ => {
|
|
||||||
return self.render_maybe_body(
|
|
||||||
¶meterized_block.else_contents,
|
|
||||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
|
||||||
blocks,
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
_ => self.render_maybe_body(
|
||||||
|
¶meterized_block.else_contents,
|
||||||
|
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||||
|
blocks,
|
||||||
|
),
|
||||||
|
};
|
||||||
}
|
}
|
||||||
DustTag::DTHelperLessThanOrEquals(parameterized_block) => {
|
DustTag::DTHelperLessThanOrEquals(parameterized_block) => {
|
||||||
let new_breadcrumbs = self.new_breadcrumbs_partial(
|
let new_breadcrumbs = self.new_breadcrumbs_partial(
|
||||||
@ -610,41 +601,36 @@ impl<'a> DustRenderer<'a> {
|
|||||||
|
|
||||||
let param_map =
|
let param_map =
|
||||||
ParametersContext::new(self, breadcrumbs, ¶meterized_block.params);
|
ParametersContext::new(self, breadcrumbs, ¶meterized_block.params);
|
||||||
if !param_map.contains_key("key") {
|
|
||||||
return Ok("".to_owned());
|
let left_side = self.tap(breadcrumbs, ¶m_map, "key");
|
||||||
}
|
let right_side = self.tap(breadcrumbs, ¶m_map, "value");
|
||||||
let left_side = param_map
|
|
||||||
.walk("key")
|
let left_side_ce = left_side.as_ref().map(|maybe_ice| {
|
||||||
.map(|ice| ice.into_context_element(self, breadcrumbs));
|
maybe_ice
|
||||||
let right_side = param_map
|
.as_ref()
|
||||||
.walk("value")
|
.map(|ice| ice.get_context_element_reference())
|
||||||
.map(|ice| ice.into_context_element(self, breadcrumbs));
|
});
|
||||||
match (left_side, right_side) {
|
let right_side_ce = right_side.as_ref().map(|maybe_ice| {
|
||||||
(Ok(Some(left_side_unwrapped)), Ok(Some(right_side_unwrapped))) => {
|
maybe_ice
|
||||||
if left_side_unwrapped.get_context_element_reference()
|
.as_ref()
|
||||||
<= right_side_unwrapped.get_context_element_reference()
|
.map(|ice| ice.get_context_element_reference())
|
||||||
{
|
});
|
||||||
return self.render_maybe_body(
|
return match (left_side_ce, right_side_ce) {
|
||||||
|
// If "key" is not present at all, return a blank string
|
||||||
|
(None, _) => Ok("".to_owned()),
|
||||||
|
(Some(Ok(left_value)), Some(Ok(right_value))) if left_value <= right_value => {
|
||||||
|
self.render_maybe_body(
|
||||||
¶meterized_block.contents,
|
¶meterized_block.contents,
|
||||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||||
blocks,
|
blocks,
|
||||||
);
|
|
||||||
} else {
|
|
||||||
return self.render_maybe_body(
|
|
||||||
¶meterized_block.else_contents,
|
|
||||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
|
||||||
blocks,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_ => {
|
|
||||||
return self.render_maybe_body(
|
|
||||||
¶meterized_block.else_contents,
|
|
||||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
|
||||||
blocks,
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
_ => self.render_maybe_body(
|
||||||
|
¶meterized_block.else_contents,
|
||||||
|
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||||
|
blocks,
|
||||||
|
),
|
||||||
|
};
|
||||||
}
|
}
|
||||||
DustTag::DTHelperSep(parameterized_block) => {
|
DustTag::DTHelperSep(parameterized_block) => {
|
||||||
let new_breadcrumbs = self.new_breadcrumbs_partial(
|
let new_breadcrumbs = self.new_breadcrumbs_partial(
|
||||||
@ -803,13 +789,13 @@ impl<'a> DustRenderer<'a> {
|
|||||||
name: &P,
|
name: &P,
|
||||||
) -> Option<Result<IceResult<'a>, WalkError>>
|
) -> Option<Result<IceResult<'a>, WalkError>>
|
||||||
where
|
where
|
||||||
P: Borrow<str>,
|
P: AsRef<str> + ?Sized,
|
||||||
{
|
{
|
||||||
if !parameters.contains_key(name.borrow()) {
|
if !parameters.contains_key(name.as_ref()) {
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
let val = parameters
|
let val = parameters
|
||||||
.walk("key")
|
.walk(name.as_ref())
|
||||||
.map(|ice| ice.into_context_element(self, breadcrumbs));
|
.map(|ice| ice.into_context_element(self, breadcrumbs));
|
||||||
match val {
|
match val {
|
||||||
Ok(Some(ice_result)) => Some(Ok(ice_result)),
|
Ok(Some(ice_result)) => Some(Ok(ice_result)),
|
||||||
@ -924,21 +910,11 @@ impl<'a> DustRenderer<'a> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn are_paths_identical<'b>(
|
fn are_paths_identical<'b>(
|
||||||
left_side: &Result<Option<IceResult<'b>>, WalkError>,
|
left_side: &Option<Result<&dyn ContextElement, &WalkError>>,
|
||||||
right_side: &Result<Option<IceResult<'b>>, WalkError>,
|
right_side: &Option<Result<&dyn ContextElement, &WalkError>>,
|
||||||
) -> bool {
|
) -> bool {
|
||||||
let left_resolved = left_side.as_ref().map(|maybe_ice| {
|
match (left_side, right_side) {
|
||||||
maybe_ice
|
(Some(Ok(lce)), Some(Ok(rce))) => (*lce) as *const _ == (*rce) as *const _,
|
||||||
.as_ref()
|
|
||||||
.map(|ice| ice.get_context_element_reference())
|
|
||||||
});
|
|
||||||
let right_resolved = right_side.as_ref().map(|maybe_ice| {
|
|
||||||
maybe_ice
|
|
||||||
.as_ref()
|
|
||||||
.map(|ice| ice.get_context_element_reference())
|
|
||||||
});
|
|
||||||
match (left_resolved, right_resolved) {
|
|
||||||
(Ok(Some(lce)), Ok(Some(rce))) => lce as *const _ == rce as *const _,
|
|
||||||
_ => false,
|
_ => false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user