diff --git a/xilem/examples/mason.rs b/xilem/examples/mason.rs index efce18e7..280773b1 100644 --- a/xilem/examples/mason.rs +++ b/xilem/examples/mason.rs @@ -92,18 +92,24 @@ fn app_logic(data: &mut AppData) -> impl WidgetView { button("Reset", |data: &mut AppData| data.count = 0), flex((fizz_buzz_flex_sequence, flex_sequence)).direction(axis), )), - async_repeat( - |proxy| async move { - let mut interval = time::interval(Duration::from_secs(1)); - loop { - interval.tick().await; - let Ok(()) = proxy.message(()) else { - break; - }; - } - }, - |data: &mut AppData, ()| data.count += 1, - ), + // The following `async_repeat` view only exists whilst the example is in the "active" state, so + // the updates it performs will only be running whilst we are in that state. + data.active.then(|| { + async_repeat( + |proxy| async move { + let mut interval = time::interval(Duration::from_secs(1)); + loop { + interval.tick().await; + let Ok(()) = proxy.message(()) else { + break; + }; + } + }, + |data: &mut AppData, ()| { + data.count += 1; + }, + ) + }), ) } diff --git a/xilem_core/src/views/fork.rs b/xilem_core/src/views/fork.rs index 5b713664..07ad8905 100644 --- a/xilem_core/src/views/fork.rs +++ b/xilem_core/src/views/fork.rs @@ -115,9 +115,7 @@ struct NoElements; impl ElementSplice for NoElements { fn with_scratch(&mut self, f: impl FnOnce(&mut AppendVec) -> R) -> R { let mut append_vec = AppendVec::default(); - let ret = f(&mut append_vec); - debug_assert!(append_vec.into_inner().is_empty()); - ret + f(&mut append_vec) } fn insert(&mut self, _: NoElement) {}