use std::rc::Rc; use dioxus::prelude::*; fn main() { dioxus_desktop::launch(app); } fn app(cx: Scope) -> Element { let elements: &UseRef>> = use_ref(cx, Vec::new); let running = use_state(cx, || true); use_future!(cx, |(elements, running)| async move { let mut focused = 0; if *running.current() { loop { tokio::time::sleep(std::time::Duration::from_millis(10)).await; if let Some(element) = elements.read().get(focused) { element.set_focus(true); } else { focused = 0; } focused += 1; } } }); cx.render(rsx!( div { h1 { "Input Roulette" } for i in 0..100 { input { value: "{i}", onmounted: move |cx| { elements.write().push(cx.inner().clone()); }, oninput: move |_| { running.set(false); } } } } )) }