Create from_borrowed and from_owned constructors for IceResult and BreadcrumbTreeElement.
In an effort to keep track of how often memory is getting heap allocated, I am implementing constructors for IceResult and BreadcrumbTreeElement. This should limit the places that I call Rc::new and allow me to place tracing code into it later to ensure all code paths doing heap allocation make sense.
This commit is contained in:
@@ -45,14 +45,14 @@ impl<'a> ParametersContext<'a> {
|
||||
let k = kvpair.key;
|
||||
let v: Option<BreadcrumbTreeElement<'a>> = match &kvpair.value {
|
||||
RValue::RVLiteral(owned_literal) => {
|
||||
Some(BreadcrumbTreeElement::Borrowed(&kvpair.value))
|
||||
Some(BreadcrumbTreeElement::from_borrowed(&kvpair.value))
|
||||
}
|
||||
RValue::RVPath(path) => kvpair
|
||||
.value
|
||||
.into_context_element(renderer, breadcrumbs)
|
||||
.map(std::convert::From::from),
|
||||
RValue::RVTemplate(template) => {
|
||||
Some(BreadcrumbTreeElement::Borrowed(&kvpair.value))
|
||||
Some(BreadcrumbTreeElement::from_borrowed(&kvpair.value))
|
||||
}
|
||||
};
|
||||
v.map(|some_v| (k, some_v))
|
||||
@@ -73,7 +73,7 @@ impl<'a> IntoContextElement for RValue<'a> {
|
||||
breadcrumbs: Option<&'b BreadcrumbTree<'b>>,
|
||||
) -> Option<IceResult<'b>> {
|
||||
match self {
|
||||
RValue::RVLiteral(owned_literal) => Some(IceResult::Borrowed(owned_literal)),
|
||||
RValue::RVLiteral(owned_literal) => Some(IceResult::from_borrowed(owned_literal)),
|
||||
RValue::RVPath(path) => walk_path(breadcrumbs, &path.keys)
|
||||
.map(|ice| ice.into_context_element(renderer, breadcrumbs))
|
||||
.ok()
|
||||
@@ -82,7 +82,7 @@ impl<'a> IntoContextElement for RValue<'a> {
|
||||
.render_partial_name(template, breadcrumbs)
|
||||
.map(|rendered| OwnedLiteral::LString(rendered))
|
||||
.ok()
|
||||
.map(|owned_literal| IceResult::Owned(Rc::new(owned_literal))),
|
||||
.map(|owned_literal| IceResult::from_owned(owned_literal)),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user