diff options
Diffstat (limited to 'lazy/src/component.rs')
-rw-r--r-- | lazy/src/component.rs | 13 |
1 files changed, 8 insertions, 5 deletions
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<Message, Renderer, Event = Event>, + component: Box<dyn Component<Message, Renderer, Event = Event> + '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<Message, Renderer, Event = Event>, +struct State<'a, Message: 'a, Renderer: 'a, Event: 'a> { + component: Box<dyn Component<Message, Renderer, Event = Event> + '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 |