use lumecs::prelude::*;
struct SubscriptionExample {
count: usize,
}
#[derive(Debug, Clone)]
enum Message {
Increment,
}
impl Runner<'_> for SubscriptionExample {
type M = Message;
fn update(&mut self, message: Message) {
match message {
Message::Increment => self.count = self.count.saturating_add(1),
}
}
fn view(&self) -> impl Widget<'_, Self::M> {
Root::flex_column()
.gap(10.0)
.align_items_center()
.justify_content_center()
.child(Text::new(format!("Count: {}", self.count)).font_size(24.0))
}
}
fn main() {
tracing_subscriber::fmt::init();
let subscription_example = SubscriptionExample { count: 0 };
let mut runtime = Runtime::new(subscription_example).expect("Failed to create runtime");
let subscription = runtime.subscription();
std::thread::spawn(move || {
loop {
std::thread::sleep(std::time::Duration::from_secs(1));
subscription
.send(Message::Increment)
.expect("Failed to send message");
}
});
runtime.run().expect("Failed to run the application");
}