summaryrefslogtreecommitdiffstats
path: root/lazy
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2021-11-08 15:29:58 +0700
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2021-11-29 15:04:13 +0700
commit010b62b9ee20b03053ab538a5910795bc0618378 (patch)
tree6b75a4844239bd93e0a125e6f9d81a356f268f28 /lazy
parentbffa7203dfd333b699bc29a22c74fb602eea4ea1 (diff)
downloadiced-010b62b9ee20b03053ab538a5910795bc0618378.tar.gz
iced-010b62b9ee20b03053ab538a5910795bc0618378.tar.bz2
iced-010b62b9ee20b03053ab538a5910795bc0618378.zip
Draft `component` example :tada:
Diffstat (limited to 'lazy')
-rw-r--r--lazy/src/component.rs13
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