From 010b62b9ee20b03053ab538a5910795bc0618378 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Mon, 8 Nov 2021 15:29:58 +0700 Subject: Draft `component` example :tada: --- lazy/src/component.rs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'lazy') diff --git a/lazy/src/component.rs b/lazy/src/component.rs index 3296533e..04832d9d 100644 --- a/lazy/src/component.rs +++ b/lazy/src/component.rs @@ -11,10 +11,12 @@ use ouroboros::self_referencing; use std::marker::PhantomData; pub fn view<'a, Event, Message, Renderer>( - component: &'a mut dyn Component, + component: Box + 'a>, ) -> Element<'a, Message, Renderer> where - Renderer: iced_native::Renderer, + Message: 'a, + Event: 'a, + Renderer: iced_native::Renderer + 'a, { Element::new(Instance { state: Some( @@ -43,8 +45,8 @@ struct Instance<'a, Message, Renderer, Event> { } #[self_referencing] -struct State<'a, Message, Renderer, Event> { - component: &'a mut dyn Component, +struct State<'a, Message: 'a, Renderer: 'a, Event: 'a> { + component: Box + 'a>, #[borrows(mut component)] #[covariant] @@ -106,7 +108,8 @@ where }); if !local_messages.is_empty() { - let component = self.state.take().unwrap().into_heads().component; + let mut component = + self.state.take().unwrap().into_heads().component; messages.extend( local_messages -- cgit