From 2821fc9f56788d36b88bf45551a97d71383fa65f Mon Sep 17 00:00:00 2001 From: Chris Brown <1731074+ccbrown@users.noreply.github.com> Date: Sun, 30 Nov 2025 18:52:27 -0500 Subject: [PATCH] fix: make render_loop Send again --- packages/iocraft/src/element.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/iocraft/src/element.rs b/packages/iocraft/src/element.rs index a38448a..a5ca8c5 100644 --- a/packages/iocraft/src/element.rs +++ b/packages/iocraft/src/element.rs @@ -291,7 +291,7 @@ enum RenderLoopFutureState<'a, E: ElementExt> { ignore_ctrl_c: bool, element: &'a mut E, }, - Running(Pin> + 'a>>), + Running(Pin> + Send + 'a>>), } /// A future that renders an element in a loop, allowing it to be dynamic and interactive. @@ -344,7 +344,7 @@ impl<'a, E: ElementExt + 'a> RenderLoopFuture<'a, E> { } } -impl<'a, E: ElementExt + 'a> Future for RenderLoopFuture<'a, E> { +impl<'a, E: ElementExt + Send + 'a> Future for RenderLoopFuture<'a, E> { type Output = io::Result<()>; fn poll( @@ -473,6 +473,7 @@ where #[cfg(test)] mod tests { use crate::prelude::*; + use futures::Future; #[allow(clippy::unnecessary_mut_passed)] #[test] @@ -501,4 +502,13 @@ mod tests { any_element_ref.print(); any_element_ref.eprint(); } + + #[test] + fn test_render_loop_future() { + fn assert_send(_f: F) {} + + let mut element = element!(View); + let render_loop_future = element.render_loop(); + assert_send(render_loop_future); + } }