From e725728a6596abc2c52ba04b77490e53c06bec50 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Sat, 6 Jun 2020 17:52:46 -0400 Subject: [PATCH] I think I have solved the lifetime issue. OwnedBreadcrumbTreeElement's needed a lifetime associated with them because IntoContextElement had lifetimes associated with it. --- src/renderer/breadcrumb_tree.rs | 2 +- src/renderer/renderer.rs | 15 ++++----------- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/src/renderer/breadcrumb_tree.rs b/src/renderer/breadcrumb_tree.rs index c22079f..7083141 100644 --- a/src/renderer/breadcrumb_tree.rs +++ b/src/renderer/breadcrumb_tree.rs @@ -13,7 +13,7 @@ pub enum BreadcrumbTreeElement<'a> { // the same BreadcrumbTreeElement but a different parent (for // example, when inserting behind the tail), we don't need to the // copy the already owned/malloc'd data. - Owned(Rc), + Owned(Rc), Borrowed(&'a dyn IntoContextElement), } diff --git a/src/renderer/renderer.rs b/src/renderer/renderer.rs index 0fc98f8..f61ec48 100644 --- a/src/renderer/renderer.rs +++ b/src/renderer/renderer.rs @@ -220,14 +220,7 @@ impl<'a> DustRenderer<'a> { }; let mut new_nodes: Vec = Vec::new(); - let p = explicit_context.as_ref().unwrap(); - let x = walk_path(maybe_breadcrumbs, &p.keys); - let ice = x.unwrap(); - let ce = ice.into_context_element(self, maybe_breadcrumbs); - let val = ce.unwrap(); - let to_insert = BreadcrumbTreeElement::Owned(Rc::new(val)); - //new_nodes.push(BreadcrumbTreeElement::Owned(Rc::new(val))); - /*explicit_context.as_ref().map(|path| { + explicit_context.as_ref().map(|path| { walk_path(maybe_breadcrumbs, &path.keys) .map(|ice| ice.into_context_element(self, maybe_breadcrumbs)) .ok() @@ -237,7 +230,7 @@ impl<'a> DustRenderer<'a> { new_nodes.push(BreadcrumbTreeElement::Owned(Rc::new(val))) } }); - });*/ + }); injected_context.map(|ctx| new_nodes.push(BreadcrumbTreeElement::Borrowed(ctx))); new_context_element .map(|ctx| new_nodes.push(BreadcrumbTreeElement::Borrowed(ctx.from_context_element()))); @@ -294,7 +287,7 @@ impl<'a> DustRenderer<'a> { _ => new_nodes.push(BreadcrumbTreeElement::Borrowed(ctx)), } }); - /*explicit_context.as_ref().map(|path| { + explicit_context.as_ref().map(|path| { // TODO: should resolving the value here use // explicit_context_maybe_breadcrumbs or // maybe_breadcrumbs? @@ -307,7 +300,7 @@ impl<'a> DustRenderer<'a> { new_nodes.push(BreadcrumbTreeElement::Owned(Rc::new(val))); } }); - });*/ + }); Some((parent, new_nodes)) }