From 69f9bb6b65fe466e2a465934645eea3458092d3e Mon Sep 17 00:00:00 2001 From: Jonathan Kelley Date: Tue, 30 Jan 2024 18:29:49 -0800 Subject: [PATCH] Make benches compile --- examples/crm.rs | 6 ++- examples/memo_chain.rs | 2 +- examples/stale_memo.rs | 2 +- examples/todomvc.rs | 2 +- examples/window_focus.rs | 10 ++-- packages/dioxus-tui/benches/update.rs | 76 ++++++++++++--------------- packages/dioxus-tui/src/lib.rs | 4 ++ packages/dioxus-tui/tests/events.rs | 18 +++---- packages/dioxus/src/launch.rs | 2 +- 9 files changed, 60 insertions(+), 62 deletions(-) diff --git a/examples/crm.rs b/examples/crm.rs index 564b7e0c9..4bc7470c4 100644 --- a/examples/crm.rs +++ b/examples/crm.rs @@ -25,7 +25,7 @@ fn main() { } /// We only have one list of clients for the whole app, so we can use a global signal. -static CLIENTS: GlobalSignal> = Signal::global(|| Vec::new()); +static CLIENTS: GlobalSignal> = Signal::global(Vec::new); struct Client { first_name: String, @@ -93,7 +93,9 @@ fn ClientAdd() -> Element { oninput: move |e| first_name.set(e.value()), // when the form mounts, focus the first name input - onmounted: move |e| {e.inner().set_focus(true);}, + onmounted: move |e| async move { + _ = e.inner().set_focus(true).await; + }, } } diff --git a/examples/memo_chain.rs b/examples/memo_chain.rs index 776001675..2d1adbf61 100644 --- a/examples/memo_chain.rs +++ b/examples/memo_chain.rs @@ -6,7 +6,7 @@ fn main() { fn app() -> Element { let mut value = use_signal(|| 0); - let mut depth = use_signal(|| 0 as usize); + let mut depth = use_signal(|| 0_usize); let items = use_memo(move || (0..depth()).map(|f| f as _).collect::>()); let state = use_memo(move || value() + 1); diff --git a/examples/stale_memo.rs b/examples/stale_memo.rs index d0256b66a..f44c7297a 100644 --- a/examples/stale_memo.rs +++ b/examples/stale_memo.rs @@ -6,7 +6,7 @@ fn main() { fn app() -> Element { let mut state = use_signal(|| 0); - let mut depth = use_signal(|| 1 as usize); + let mut depth = use_signal(|| 1_usize); if depth() == 5 { return rsx! { diff --git a/examples/todomvc.rs b/examples/todomvc.rs index db0672c34..25a124c71 100644 --- a/examples/todomvc.rs +++ b/examples/todomvc.rs @@ -24,7 +24,7 @@ struct TodoItem { const STYLE: &str = include_str!("./assets/todomvc.css"); fn app() -> Element { - let mut todos = use_signal(|| HashMap::::new()); + let mut todos = use_signal(HashMap::::new); let filter = use_signal(|| FilterState::All); let active_todo_count = diff --git a/examples/window_focus.rs b/examples/window_focus.rs index d4f477391..04a4b22ae 100644 --- a/examples/window_focus.rs +++ b/examples/window_focus.rs @@ -13,12 +13,14 @@ fn main() { fn app() -> Element { let mut focused = use_signal(|| true); - use_wry_event_handler(move |event, _| match event { - WryEvent::WindowEvent { + use_wry_event_handler(move |event, _| { + if let WryEvent::WindowEvent { event: WindowEvent::Focused(new_focused), .. - } => focused.set(*new_focused), - _ => {} + } = event + { + focused.set(*new_focused) + } }); rsx! { diff --git a/packages/dioxus-tui/benches/update.rs b/packages/dioxus-tui/benches/update.rs index ce9682fba..0f0479400 100644 --- a/packages/dioxus-tui/benches/update.rs +++ b/packages/dioxus-tui/benches/update.rs @@ -57,7 +57,7 @@ fn tui_update(c: &mut Criterion) { } } -#[derive(Props, PartialEq)] +#[derive(Props, PartialEq, Clone)] struct BoxProps { x: usize, y: usize, @@ -65,15 +65,15 @@ struct BoxProps { alpha: f32, } #[allow(non_snake_case)] -fn Box(cx: ScopeState) -> Element { +fn Box(props: BoxProps) -> Element { let count = use_signal(|| 0); - let x = cx.props.x * 2; - let y = cx.props.y * 2; - let hue = cx.props.hue; - let display_hue = cx.props.hue as u32 / 10; - let count = count.get(); - let alpha = cx.props.alpha + (count % 100) as f32; + let x = props.x * 2; + let y = props.y * 2; + let hue = props.hue; + let display_hue = props.hue as u32 / 10; + let count = count(); + let alpha = props.alpha + (count % 100) as f32; rsx! { div { @@ -88,24 +88,24 @@ fn Box(cx: ScopeState) -> Element { } } -#[derive(Props, PartialEq)] +#[derive(Props, PartialEq, Clone)] struct GridProps { size: usize, update_count: usize, } #[allow(non_snake_case)] -fn Grid(cx: ScopeState) -> Element { - let size = cx.props.size; - let count = use_signal(|| 0); - let counts = use_signal(|| vec![0; size * size]); +fn Grid(props: GridProps) -> Element { + let size = props.size; + let mut count = use_signal(|| 0); + let mut counts = use_signal(|| vec![0; size * size]); - let ctx: TuiContext = cx.consume_context().unwrap(); - if *count.get() + cx.props.update_count >= (size * size) { + let ctx: TuiContext = consume_context(); + if count() + props.update_count >= (size * size) { ctx.quit(); } else { - for _ in 0..cx.props.update_count { + for _ in 0..props.update_count { counts.with_mut(|c| { - let i = *count.current(); + let i = count(); c[i] += 1; c[i] %= 360; }); @@ -121,44 +121,34 @@ fn Grid(cx: ScopeState) -> Element { width: "100%", height: "100%", flex_direction: "column", - (0..size).map(|x| - { - rsx! { - div{ - width: "100%", - height: "100%", - flex_direction: "row", - (0..size).map(|y| - { - let alpha = y as f32*100.0/size as f32 + counts.read()[x*size + y] as f32; - let key = format!("{}-{}", x, y); - rsx! { - Box{ - x: x, - y: y, - alpha: 100.0, - hue: alpha, - key: "{key}", - } - } - } - ) + for x in 0..size { + div { + width: "100%", + height: "100%", + flex_direction: "row", + for y in 0..size { + Box { + key: "{x}-{y}", + x: x, + y: y, + alpha: 100.0, + hue: y as f32*100.0/size as f32 + counts.read()[x*size + y] as f32, } } } - ) + } } } } -fn app(cx: ScopeState) -> Element { +fn app(props: GridProps) -> Element { rsx! { div{ width: "100%", height: "100%", Grid{ - size: cx.props.size, - update_count: cx.props.update_count, + size: props.size, + update_count: props.update_count, } } } diff --git a/packages/dioxus-tui/src/lib.rs b/packages/dioxus-tui/src/lib.rs index e0a759a8c..e4ec574eb 100644 --- a/packages/dioxus-tui/src/lib.rs +++ b/packages/dioxus-tui/src/lib.rs @@ -29,6 +29,10 @@ pub fn launch_cfg(app: fn() -> Element, cfg: Config) { launch_vdom_cfg(VirtualDom::new(app), cfg) } +pub fn launch_cfg_with_props(app: fn(P) -> Element, props: P, cfg: Config) { + launch_vdom_cfg(VirtualDom::new_with_props(app, props), cfg) +} + pub fn launch_vdom_cfg(vdom: VirtualDom, cfg: Config) { dioxus_html::set_event_converter(Box::new(events::SerializedHtmlEventConverter)); diff --git a/packages/dioxus-tui/tests/events.rs b/packages/dioxus-tui/tests/events.rs index ac9dfff59..f49b64d97 100644 --- a/packages/dioxus-tui/tests/events.rs +++ b/packages/dioxus-tui/tests/events.rs @@ -34,7 +34,7 @@ fn key_down() { fn app() -> Element { let render_count = use_signal(|| 0); - let mut render_count_handle = render_count.clone(); + let mut render_count_handle = render_count; let tui_ctx: TuiContext = consume_context(); spawn(async move { @@ -77,7 +77,7 @@ fn mouse_down() { fn app() -> Element { let render_count = use_signal(|| 0); let tui_ctx: TuiContext = consume_context(); - let mut render_count_handle = render_count.clone(); + let mut render_count_handle = render_count; spawn(async move { PollN::new(2).await; render_count_handle.with_mut(|x| *x + 1); @@ -113,7 +113,7 @@ fn mouse_up() { fn app() -> Element { let render_count = use_signal(|| 0); let tui_ctx: TuiContext = consume_context(); - let mut render_count_handle = render_count.clone(); + let mut render_count_handle = render_count; spawn(async move { PollN::new(3).await; render_count_handle.with_mut(|x| *x + 1); @@ -151,7 +151,7 @@ fn mouse_enter() { fn app() -> Element { let render_count = use_signal(|| 0); - let mut render_count_handle = render_count.clone(); + let mut render_count_handle = render_count; let tui_ctx: TuiContext = consume_context(); spawn(async move { PollN::new(3).await; @@ -191,7 +191,7 @@ fn mouse_exit() { fn app() -> Element { let render_count = use_signal(|| 0); let tui_ctx: TuiContext = consume_context(); - let mut render_count_handle = render_count.clone(); + let mut render_count_handle = render_count; spawn(async move { PollN::new(3).await; render_count_handle.with_mut(|x| *x + 1); @@ -230,7 +230,7 @@ fn mouse_move() { fn app() -> Element { let render_count = use_signal(|| 0); let tui_ctx: TuiContext = consume_context(); - let mut render_count_handle = render_count.clone(); + let mut render_count_handle = render_count; spawn(async move { PollN::new(3).await; render_count_handle.with_mut(|x| *x + 1); @@ -269,7 +269,7 @@ fn wheel() { fn app() -> Element { let render_count = use_signal(|| 0); let tui_ctx: TuiContext = consume_context(); - let mut render_count_handle = render_count.clone(); + let mut render_count_handle = render_count; spawn(async move { PollN::new(3).await; render_count_handle.with_mut(|x| *x + 1); @@ -309,7 +309,7 @@ fn click() { fn app() -> Element { let render_count = use_signal(|| 0); let tui_ctx: TuiContext = consume_context(); - let mut render_count_handle = render_count.clone(); + let mut render_count_handle = render_count; spawn(async move { PollN::new(3).await; render_count_handle.with_mut(|x| *x + 1); @@ -348,7 +348,7 @@ fn context_menu() { fn app() -> Element { let render_count = use_signal(|| 0); let tui_ctx: TuiContext = consume_context(); - let mut render_count_handle = render_count.clone(); + let mut render_count_handle = render_count; spawn(async move { PollN::new(3).await; render_count_handle.with_mut(|x| *x + 1); diff --git a/packages/dioxus/src/launch.rs b/packages/dioxus/src/launch.rs index 71e541202..b76687363 100644 --- a/packages/dioxus/src/launch.rs +++ b/packages/dioxus/src/launch.rs @@ -1,5 +1,5 @@ //! Launch helper macros for fullstack apps - +#![allow(clippy::new_without_default)] #![allow(unused)] use std::any::Any;